将两个“find”命令与不同的“exec”结合起来

有没有办法在 Linux bash 上组合这两个命令?

> find web/ -type d -exec chmod 755 {} ;
> find web/ -type f -exec chmod 644 {} ;

这两个命令都需要一段时间,我想知道这是否会更有效?

回答

您可以将它们与 结合使用-o,但这不会加快速度;我很确定大部分减速是由于chmod为每个目录和文件创建了一个单独的进程。您可以使用-exec ... +(而不是-exec ... ;)在大量目录/文件上运行单个命令实例:

find web ( -type d -exec chmod 755 {} + ) -o ( -type f -exec chmod 644 {} + )

...但还有一种更快的方法。chmod支持“符号”模式以及数字模式,并且这些模式可以包括X执行如果它有意义(即主要在目录上,而不是在文件上)。有了这个,您可以chmod在整个目录树上运行单个递归,并让它找出在哪些项目上使用哪些权限:

chmod -R u=rwX,go=rX web

(不过,这有一个可能的问题:如果任何文件已经具有执行权限,chmod则会假定它应该具有执行权限,并将保留它。)


以上是将两个“find”命令与不同的“exec”结合起来的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>