如何将某个文件模式的文件权限更改为当前目录的子文件夹?

时间:2010-11-22 20:23:10

标签: linux bash unix file-permissions chmod

使用chmod,我在当前目录中执行chmod +x *.sh但如果我想更改所有文件,包括具有sh文件扩展名的子文件夹中的文件,该怎么办?

chmod +x -R *可以使用,但我需要更像chmod +x -R *.sh

的内容

3 个答案:

答案 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构建命令行的方式大致相同。命令中只允许一个{}实例。该命令在起始目录中执行。