我需要使用chmod将所有文件递归地更改为664。我想跳过文件夹。我在考虑做这样的事情
ls -lR | grep ^-r | chmod 664
这不起作用,我猜是因为我不能连接chmod,有谁知道一个简单的方法来做这件事?
谢谢
发布于 2009-07-22 06:03:21
另一种方法是使用find ... -exec ...
,如下所示:
find . -type f -exec chmod 644 {} \;
问题是-exec
会为每个文件启动一个chmod
进程,效率很低。避免这种情况的解决方案是:
find . -type f -exec chmod 644 {} +
这将在chmod
进程命令行上组装尽可能多的文件名参数。find ... | xargs ...
方法与此类似;请参阅公认的答案。
根据记录,如果有太多的文件需要chmoded,或者路径名的聚合长度太大,那么使用反划线将会中断。
发布于 2014-03-24 14:12:27
我简明扼要的两分钱。
Linux:
$ chmod 644 `find -type f`
OSX:
$ chmod 644 `find . -type f`
这会递归地更改当前目录及其所有子目录中包含的所有文件。如果您想以其他目录为目标,请用正确的路径替换.
:
$ chmod 644 `find /home/my/special/folder -type f`
发布于 2009-07-22 06:49:26
使用GNU find
find /path -type f -exec chmod 644 {} +;
https://stackoverflow.com/questions/1163294
复制相似问题