Alex Asked: 2018-02-20 07:06:53 +0800 CST2018-02-20 07:06:53 +0800 CST 2018-02-20 07:06:53 +0800 CST 如何在特定文件夹中找到我没有写入权限的所有文件? 772 如何找到我无法写入的所有文件? 如果考虑到标准权限和 acls 会很好。 有没有“简单”的方法,还是我必须自己解析权限? files permissions 2 个回答 Voted Best Answer Félicien 2018-02-20T07:17:50+08:002018-02-20T07:17:50+08:00 尝试 find . ! -writable 该命令find返回文件列表,-writable仅过滤您具有写入权限的文件,并!反转过滤器。 -type f如果您想忽略目录和其他“特殊文件”,您可以添加。 Kusalananda 2018-04-10T08:47:38+08:002018-04-10T08:47:38+08:00 在非 Linux 系统和没有 GNUfind的系统上,以下可能会给出与 相同的输出find . -type f ! -writable,但是它没有考虑次要组。 myname=$( id -un ) mygroup=$( id -gn ) find . -type f '(' \ '(' -user "$myname" ! -perm -u=w ')' -o \ '(' ! -user "$myname" -group "$mygroup" ! -perm -g=w ')' -o \ '(' ! -user "$myname" ! -group "$mygroup" ! -perm -o=w ')' ')' 四个测试顺序: 是普通文件吗? 它是我拥有但我没有写入权限的文件吗? 它是不是我不拥有但属于我的组且我没有组写入权限的文件? 它是不是我不拥有且不属于我的组且我没有一般(“其他”)写入权限的文件? 这样做的好处是您可以替换为另一个用户的名称和组,我认为 GNUfind不允许-writable您这样做。 相同的命令,但逻辑以 AND 形式编写: find . -type f \ ! '(' -user "$myname" -perm -u=w ')' \ ! '(' ! -user "$myname" -group "$mygroup" -perm -g=w ')' \ ! '(' ! -user "$myname" ! -group "$mygroup" -perm -o=w ')'
尝试
该命令
find
返回文件列表,-writable
仅过滤您具有写入权限的文件,并!
反转过滤器。-type f
如果您想忽略目录和其他“特殊文件”,您可以添加。在非 Linux 系统和没有 GNU
find
的系统上,以下可能会给出与 相同的输出find . -type f ! -writable
,但是它没有考虑次要组。四个测试顺序:
这样做的好处是您可以替换为另一个用户的名称和组,我认为 GNU
find
不允许-writable
您这样做。相同的命令,但逻辑以 AND 形式编写: