LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1976|回复: 11

如何使用单行bash命令修改文件夹中所有文件的权限?[已解决]

[复制链接]
发表于 2007-12-6 09:42:49 | 显示全部楼层 |阅读模式
需求:
有一个的文件夹,他包含子文件夹和文件,而且其子文件夹中也包含文件,例如:
├─html───inc───footer.html
     │       ├─index.html
     │       └─cate.html
    image─index─x.jpg
如何在bash里用一句简单的命令实现修改该文件夹中所有文件(包括其子文件夹中的文件)的权限?

我的想法是利用find查出所有文件然后再用管道传给chmod,例如:
find /pages -type f | chmod 644
但是运行结果不对,显示chmod方法需要参数:
chmod: missing operand after `644'
发表于 2007-12-6 10:00:30 | 显示全部楼层
chmod -R
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-6 10:07:10 | 显示全部楼层
试过的,不行阿,一样的错误阿!
回复 支持 反对

使用道具 举报

发表于 2007-12-6 10:10:04 | 显示全部楼层
find /pages -type f |xargs -i chmod 644 {}
回复 支持 反对

使用道具 举报

发表于 2007-12-6 10:20:52 | 显示全部楼层
两个方法
for file in `ls ./`; do chmod 644 $file; done

find ./* -type f -exec chmod 644 {} \;
回复 支持 反对

使用道具 举报

发表于 2007-12-6 10:33:33 | 显示全部楼层
chmod  644 -R <the dir>
回复 支持 反对

使用道具 举报

发表于 2007-12-6 11:09:36 | 显示全部楼层
ls的貌似不行,因为文件夹不能被修改成644,否则会进不去
回复 支持 反对

使用道具 举报

发表于 2007-12-6 11:12:42 | 显示全部楼层
lz是为了修改从fat或者ntfs文件系统考过来东西么?我也经常碰到。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-6 13:44:12 | 显示全部楼层
Post by yuhch123;1792260
lz是为了修改从fat或者ntfs文件系统考过来东西么?我也经常碰到。。


ls的问题可用ntfs-3g直接解决:
ntfs-3g /dev/sdb1 /media/MData -o locale=en_US.UTF-8,uid=1000,gid=1000,fmask=133,dmas
k=022
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-6 13:56:54 | 显示全部楼层
Post by davi;1792230
find /pages -type f |xargs -i chmod 644 {}


根据这个提示拿到正解,上面的答案没法解决文件名中的空格,所以看了下文档把正解告诉大家:

find /incoming/wallpaper/ -type f -print0|xargs -0 chmod 644

已经测试过了,文件名有空格也无所谓的!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表