![查找设置了 ACL 的文件](https://linux22.com/image/1307440/%E6%9F%A5%E6%89%BE%E8%AE%BE%E7%BD%AE%E4%BA%86%20ACL%20%E7%9A%84%E6%96%87%E4%BB%B6.png)
+
我如何才能找到所有设置了一些扩展 ACL 的文件,即那些在所示的权限标志末尾带有一点的文件ls -l
。
我找不到 的对应标志find
。我最原始的方法是将和find
结合起来。但我认为这不太好。ls -l
grep
有人有想法吗?
答案1
getfacl
可以递归转储 ACL,并且它有一个--skip-base
忽略没有 ACL 的文件的选项。
getfacl -R -s -p /directory | sed -n 's/^# file: //p'
答案2
Perl 版本:
getfacl -R -p -s / | perl -wn -e ' if (/^# file/) { s|^# file: /||; print; }'
答案3
-R
:递归列出所有文件和目录的ACL。
-s
:跳过仅具有基本 ACL 条目(所有者、组、其他)的文件。
getfacl -Rs .
getfacl --recursive --skip-base .
答案4
我发现谷歌搜索的结果恰恰相反,它用于查找未设置 ACL 的文件。这就是我最终得到的结果(以防其他谷歌用户找到它)
ls --color=auto -lR | grep -v "\+ " | grep -v "^[.,a-z,1-9]" | grep -v "^$"
显然ls -R
比 find 更快(我有数以亿计的文件,每个 find 命令都要花 2 个小时)。