首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有选择地使用chmod命令

有选择地使用chmod命令
EN

Unix & Linux用户
提问于 2019-01-08 09:21:08
回答 2查看 2.1K关注 0票数 11

我想对特定目录下的所有文件和子目录设置755权限,但我只想对那些没有755权限的组件执行chmod 755。

代码语言:javascript
复制
find /main_directory/ -exec chmod 755 {} \;

如果find命令返回一个长列表,这将需要很长的时间。我知道我可以使用stat命令检查每个组件的八进制文件级权限,然后使用if-else切换文件权限,但是是否有任何单行方法使用findxargs来首先检查文件/目录具有什么权限,然后使用chmod将其更改为755 (如果设置为其他权限)。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2019-01-08 09:24:35

如果您想对文件和目录都更改对755的权限,那么使用find并没有真正的好处(至少从性能的角度来看),您可以这样做。

代码语言:javascript
复制
chmod -R 755 /main_directory

如果您确实希望使用find来避免更改已具有755权限的事物的权限(以避免更新它们的ctime标记),那么您还应该测试每个目录和文件上的当前权限:

代码语言:javascript
复制
find /main_directory ! -perm 0755 -exec chmod 755 {} +

-exec ... {} +将收集尽可能多的通过! -perm 0755测试的路径名,并在所有这些路径上同时执行chmod

通常,需要分别更改文件和目录的权限,这样并不是所有的文件都是可执行的:

代码语言:javascript
复制
find /main_directory   -type d ! -perm 0755 -exec chmod 755 {} +
find /main_directory ! -type d ! -perm 0644 -exec chmod 644 {} +
票数 21
EN

Unix & Linux用户

发布于 2019-01-08 09:42:23

由于find已经获得了-exec ... +语法,所以使用xargs没有多大意义,但正如您所要求的那样:

代码语言:javascript
复制
find /main_directory -not -perm 0755 | xargs chmod 755
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/493181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档