You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用find命令通过文件权限排除Untitled.rtf文件?

问题:使用find命令排除特定权限的文件

我想用find命令筛选文件,现在需要排除权限为-rwxr-xr-x@的“Untitled.rtf”文件。我已经能通过命令找到这个文件,但用!(NOT)和-a(AND)组合的find命令没能成功排除它,求正确命令。

文件权限列表

-rwxr-xr-x@ 1 X  staff  368 Jan 24 03:02 Untitled.rtf*
-rw-------  1 X  staff    0 Jan 24 02:37 t
-r--------  1 X  staff    0 Jan 24 02:40 t2
drwx------  2 X  staff   64 Jan 24 02:52 t3/

已成功找到目标文件的命令

$ find . \( -perm -g+r -o -perm -g+w -o -perm -g+x -o -perm -o+r -o -perm -o+w -o -perm -o+x \) -exec ls -l {} \;

-rwxr-xr-x@ 1 X  staff  368 Jan 24 03:02 ./Untitled.rtf

尝试但未成功的排除命令

$ find . \( -perm -000 -a ! \( -perm -g+r -o -perm -g+w -o -perm -g+x -o -perm -o+r -o -perm -o+w -o -perm -o+x \) \) -exec ls -l {} \;

-rwxr-xr-x@ 1 X  staff  368 Jan 24 03:02 Untitled.rtf
-rw-------  1 X  staff    0 Jan 24 02:37 t
-r--------  1 X  staff    0 Jan 24 02:40 t2
drwx------  2 X  staff   64 Jan 24 02:52 t3
-r--------  1 X  staff  0 Jan 24 02:40 ./t2
-rw-------  1 X  staff  0 Jan 24 02:37 ./t

正确命令及解释

你之前的排除命令逻辑出错了:-perm -000是找所有权限位都未设置的文件,这和你的需求完全不匹配,而且逻辑组合也不对。要排除“组或其他用户有任何读/写/执行权限”的文件,也就是保留组和其他用户都没有任何权限的文件,有两种可行的写法:

写法一:直接取反匹配条件

find . ! \( -perm -g+r -o -perm -g+w -o -perm -g+x -o -perm -o+r -o -perm -o+w -o -perm -o+x \) -exec ls -l {} \;

这个命令直接对之前找到目标文件的条件取反,就能排除所有符合该条件的文件(也就是Untitled.rtf),剩下的就是你需要保留的文件。

写法二:精准指定权限掩码

因为你要保留的是普通文件权限为600(-rw-------)、目录权限为700(drwx------)的文件,可以直接指定类型和权限,效率更高:

find . \( -type f -perm 600 \) -o \( -type d -perm 700 \) -exec ls -l {} \;

执行这两个命令后,输出都只会包含t、t2、t3,不会出现Untitled.rtf。

内容的提问来源于stack exchange,提问作者notaorb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 21:07:32