使用chmod
,我chmod +x *.sh
在当前目录中执行,但是如果我想更改所有文件,包括具有 sh 文件扩展名的子文件夹中的文件,该怎么办?
chmod +x -R *
会工作,但我需要更多类似的东西chmod +x -R *.sh
使用chmod
,我chmod +x *.sh
在当前目录中执行,但是如果我想更改所有文件,包括具有 sh 文件扩展名的子文件夹中的文件,该怎么办?
chmod +x -R *
会工作,但我需要更多类似的东西chmod +x -R *.sh
使用查找:
find . -name "*.sh" -exec chmod +x {} \;
尝试使用 find 与 xargs 的完美组合。
find . -iname \*.sh -print0 | xargs -r0 chmod +x
是开始的.
目录,在这种情况下是工作目录。
使用现代版本的find
xargs
,您可以获得避免多次调用命令 ( chmod
)的方法的好处。该命令仅略有不同。
find . -name "*.sh" -exec chmod +x {} +
从Arch 2015.09.01的find
文档中截取(重点由我添加):
-exec command {} +
此
-exec
操作变体在选定文件上运行指定命令,但命令行是通过在末尾附加每个选定文件名来构建的;该命令的总调用次数将远少于匹配文件的数量。命令行的构建方式与xargs
构建其命令行的方式大致相同。{}
命令中只允许一个实例。该命令在起始目录中执行。