加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

unix – 更改chmod的文件,但不是目录

发布时间:2020-12-15 16:31:09 所属栏目:安全 来源:网络整理
导读:我需要使用chmod将所有文件递归地更改为664.我想跳过文件夹。 我在想这样做 ls -lR | grep ^-r | chmod 664 这不工作,我假设,因为我不能管入chmod 任何人都知道一个简单的方法来做到这一点? 谢谢 find -exec答案是一个好的,但它有通常不相关的缺点,它为
我需要使用chmod将所有文件递归地更改为664.我想跳过文件夹。
我在想这样做
ls -lR | grep ^-r | chmod 664

这不工作,我假设,因为我不能管入chmod
任何人都知道一个简单的方法来做到这一点?

谢谢

find -exec答案是一个好的,但它有通常不相关的缺点,它为每个文件创建一个单独的子过程。但它是完美的功能,只会执行不好,当文件的数量变得非常大。在为该组文件运行子进程之前,使用xargs会将文件名批量化为大组。

你只需要小心,在使用xargs,你正确处理带有嵌入空格,换行符或其他特殊字符的文件名。

解决这两个问题的解决方案是(假设你有一个足够体面的find和xargs实现):

find . -type f -print0 | xargs -0 chmod 644

-print0导致find使用NUL字符(而不是空格)在其输出流上终止文件名,而-0到xargs让它知道它应该将该字符作为输入格式。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读