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

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

chmod +x -R *会工作,但我需要更多的东西像chmod +x -R *.sh

Solutions Collecting From Web of "如何将文件权限更改为某个文件模式到当前目录的子文件夹?"

使用find:

 find . -name "*.sh" -exec chmod +x {} \; 

尝试使用find和xargs的光荣组合。

 find . -iname \*.sh | xargs chmod +x 

. 是开始的目录,在这种情况下是工作目录。

使用现代版本的find ,您可以获得避免多次调用命令( chmod )的xargs方法的好处。 命令只是略有不同。

find . -name "*.sh" -exec chmod +x {} +

从Arch 文档find 2015.09.01( 强调加我):

-exec command {} +

-exec操作的这种变体在选定的文件上运行指定的命令, 但命令行是通过在每个选定的文件名后添加来构建的; 该命令的总调用次数将远远少于匹配文件的数量 。 命令行的构建方式与xargs构建其命令行的方式大致相同。 在命令中只允许有一个{}实例。 该命令在起始目录中执行。