M B*_*own 8 linux command-line-interface find
这是我的第一个问题,虽然我已经潜伏了一段时间。
问题:我想使用 find 仅获取权限未设置为 644(或其他权限值)的目录中的文件。是否有更短的写法,或者是仅使用 -perm 和 -or 选项并列出除 644 之外的每个权限类型的唯一方法?
这是我希望加速的更大命令的一部分:
find /path/to/dir/ -type f -print0 | xargs -0 chmod 644
Run Code Online (Sandbox Code Playgroud)
我希望只提供需要更新的文件名 xargs 会加快速度。该目录有大约一百万个文件,但通常只有大约 10,000 个文件需要更新权限。我认为该命令很慢,因为它仍然在管道中传输所有文件。也许有一个更有效的方法来处理更大的命令。如果你知道一个,请告诉我。不过我还是想知道这个问题的答案。顺便说一句,在将文件添加到目录之前,我无法更新权限。
Ken*_*ert 18
!当条件为假时,运算符返回真。
因此,虽然-perm 0644匹配设置了 rw-r--r-- 权限的文件,但匹配! -perm 0644没有这些权限的文件。
你需要的命令是:
find /path/to/dir/ -type f ! -perm 0644 -print0 | xargs -0 chmod 644
Run Code Online (Sandbox Code Playgroud)