chmod:如何递归地仅对已有执行权限的文件添加执行权限

16
我注意到: chmod -R a+x 会给所有文件添加执行权限,而不仅仅是那些已经有执行权限的文件。
有没有一种方法只为那些用户权限已经设置执行权限的文件添加执行权限?
2个回答

27

使用 find 方法:

find . -perm /u+x -execdir chmod a+x {} \;

5
请使用 -execdir 命令,它比 -exec 更安全。另外,由于 chmod 命令可以在单个命令行中接受多个文件,因此使用 + 而不是 \; 可能会有更好的性能表现。 - jw013
感谢提到+模式!然而,使用-execdir代替-exec会再次压缩获得的性能优势;而且由于find命令已经提供了完整的文件路径,这是否很重要呢?对我来说最快的命令是... -exec chmod <mode> {} + - codeling

5
你可以使用find命令来获取所有这些文件:
find . -type f -perm -o+rx -print0 | xargs -0 chmod a+x

更新:添加-print0以保留文件名中的空格。


3
别那样做,那会弄乱文件名中的空格。如果你想要使用管道传输到 xargs,请使用“-print0”find选项和“-0”xargs选项。 - Mat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接