我应该如何为所有隐藏文件添加glob?

我想对目录中的所有隐藏文件执行一些操作(比如chown )。

我知道这个.* 不是一个好主意,因为它也会找到当前的. 和父..目录(我知道rm将无法操作...但其他命令,包括chownchmod ,将很高兴生效)

但我所有的隐藏文件都有不同的名字!

如何在排除时为所有隐藏文件添加glob ...

您可以使用以下extglob模式:

 .@(!(.|)) 
  • . 匹配文字. 首先

  • @()是一个extglob模式,会匹配其中一个模式,因为我们里面只有一个模式,它会选择那个

  • !(.|)是另一个extglob模式(嵌套),它匹配任何没有或一个文件. ; 我们已经匹配了. 在开始时,整个模式将匹配所有以.开头的文件. 除了...

默认情况下,在Ubuntu中,在bash的交互式会话中启用了extglob 。 如果没有,请先启用它:

 shopt -s extglob 

例:

 $ echo .@(!(.|)) .bar .foo .spam 
  GLOBIGNORE=".:.." 

隐藏。 和..目录。 这也设置了dotglob选项: *匹配隐藏和非隐藏文件。

你也可以这样做

 shopt -s dotglob 

吉尔斯:)

您可以在此处使用find命令。 比如像

 find -type f -name ".*" -exec chmod 775 {} \; 

这将找到隐藏文件和更改权限


编辑以包含@gerrit的评论:

 find -type f -maxdepth 1 -name ".*" -exec chmod 775 {} \; 

这将限制搜索顶部当前目录而不是递归搜索。