使用chmod
,我在当前目录中执行chmod +x *.sh
但如果我想更改所有文件,包括具有sh文件扩展名的子文件夹中的文件,该怎么办?
chmod +x -R *
可以使用,但我需要更像chmod +x -R *.sh
答案 0 :(得分:51)
使用find:
find . -name "*.sh" -exec chmod +x {} \;
答案 1 :(得分:9)
尝试使用find与xargs的光荣组合。
find . -iname \*.sh -print0 | xargs -r0 chmod +x
.
是要开始的目录,在本例中是工作目录。
答案 2 :(得分:3)
使用现代版find
,您可以获得xargs
方法的好处,避免多次调用该命令(chmod
)。该命令略有不同。
find . -name "*.sh" -exec chmod +x {} +
在Arch 2015.09.01 {{strong>强调>)上从find
docs剪辑:
-exec command {} +
-exec
操作的此变体在所选文件上运行指定命令,但命令行是通过在末尾附加每个选定文件名来构建的;命令的调用总数将远远小于匹配文件的数量。命令行的构建方式与xargs
构建命令行的方式大致相同。命令中只允许一个{}
实例。该命令在起始目录中执行。