有没有办法在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 {} + )
但还有一个更快的方法。CCD_ 5支持";符号";模式以及数字,如果有意义的话(即主要在目录上,而不是在文件上(,这些模式可以包括用于执行的X
。这样,您就可以在整个目录树上运行一个递归chmod
,并让它计算出在哪些项上使用哪些排列:
chmod -R u=rwX,go=rX web
(不过,这可能有一个问题:如果任何文件已经具有执行权限,chmod
将认为它应该具有执行权限并保留它。(
最简单的是:
find web/ -type d -exec chmod 755 {} ; -or -type f -exec chmod 644 {} ;
正如@KamilCuk有用地建议的那样,您也可以将这种符合POSIX的语法与-o
而不是-or
:一起使用
find web/ -type d -exec chmod 755 {} ; -o -type f -exec chmod 644 {} ;
一个可能的解决方案是使用&&
运算符组合它们。
find web/ -type d -exec chmod 755 {} ; && find web/ -type f -exec chmod 644 {} ;
这种方法没有速度优势。