我应该如何为所有隐藏文件添加glob?
我想对目录中的所有隐藏文件执行一些操作(比如chown
)。
我知道这个.*
不是一个好主意,因为它也会找到当前的.
和父..
目录(我知道rm
将无法操作.
和..
但其他命令,包括chown
和chmod
,将很高兴生效)
但我所有的隐藏文件都有不同的名字!
如何在排除时为所有隐藏文件添加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 {} \;
这将限制搜索顶部当前目录而不是递归搜索。