いくつかの拡張ACLが設定されているすべてのファイル、つまり+
で示される許可フラグの最後に小さなls -l
が設定されているすべてのファイルを見つけるにはどうすればよいですか。
find
に対応するフラグが見つかりませんでした。私の素朴なアプローチは、find
をls -l
とgrep
と組み合わせたものです。しかし、これはいいとは思いません。
誰かがアイデアを持っていますか?
getfacl
はACLを再帰的にダンプでき、--skip-base
ACLのないファイルを無視するためのオプション。
getfacl -R -s -p /directory | sed -n 's/^# file: //p'
-R
:すべてのファイルとディレクトリのACLを再帰的にリストします。
-s
:基本ACLエントリーのみを持つファイル(所有者、グループ、その他)をスキップします。
getfacl -Rs .
getfacl --recursive --skip-base .
私はこれが反対のグーグルであることに気づきました。 ACLが設定されていないファイルを検索します。これは私が最終的に得たものです(他のグーグルがそれを見つけた場合に備えて)
ls --color=auto -lR | grep -v "\+ " | grep -v "^[.,a-z,1-9]" | grep -v "^$"
どうやらls -R
はfindよりも高速です(私は数千万のファイルを持っており、各findコマンドには2時間かかります)。
Perlバージョン:
getfacl -R -p -s / | Perl -wn -e ' if (/^# file/) { s|^# file: /||; print; }'