我想对特定目录下的所有文件和子目录设置755权限,但我只想对那些没有755权限的组件执行chmod 755。
find /main_directory/ -exec chmod 755 {} \;如果find命令返回一个长列表,这将需要很长的时间。我知道我可以使用stat命令检查每个组件的八进制文件级权限,然后使用if-else切换文件权限,但是是否有任何单行方法使用find和xargs来首先检查文件/目录具有什么权限,然后使用chmod将其更改为755 (如果设置为其他权限)。
发布于 2019-01-08 09:24:35
如果您想对文件和目录都更改对755的权限,那么使用find并没有真正的好处(至少从性能的角度来看),您可以这样做。
chmod -R 755 /main_directory如果您确实希望使用find来避免更改已具有755权限的事物的权限(以避免更新它们的ctime标记),那么您还应该测试每个目录和文件上的当前权限:
find /main_directory ! -perm 0755 -exec chmod 755 {} +-exec ... {} +将收集尽可能多的通过! -perm 0755测试的路径名,并在所有这些路径上同时执行chmod。
通常,需要分别更改文件和目录的权限,这样并不是所有的文件都是可执行的:
find /main_directory -type d ! -perm 0755 -exec chmod 755 {} +
find /main_directory ! -type d ! -perm 0644 -exec chmod 644 {} +发布于 2019-01-08 09:42:23
由于find已经获得了-exec ... +语法,所以使用xargs没有多大意义,但正如您所要求的那样:
find /main_directory -not -perm 0755 | xargs chmod 755https://unix.stackexchange.com/questions/493181
复制相似问题