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

iva*_*ras 33 unix linux bash file-permissions chmod

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

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

enn*_*ler 57

使用find:

find . -name "*.sh" -exec chmod +x {} \;
Run Code Online (Sandbox Code Playgroud)


Orb*_*ing 9

尝试使用find与xargs的光荣组合.

find . -iname \*.sh -print0 | xargs -r0 chmod +x
Run Code Online (Sandbox Code Playgroud)

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


cha*_*pjc 8

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

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

Arch 2015.09.01 上的find文档片段(重点是我添加的):

-exec command {} +

此操作的变体-exec对选定的文件运行指定的命令,但命令行是通过在末尾附加每个选定的文件名来构建的;该命令的调用总数将远小于匹配的文件数。命令行的构建方式与构建其命令行的方式大致相同xargs{}命令中只允许出现一个 的实例。该命令在起始目录中执行。