特定の権限を持つファイルのリストを探す

特定の権限を持つファイルのリストを探す

findコマンドを見て、find . -maxdepth 1 -perm 521 > test.txt権限をテキストファイルに出力する方法を見つけましたが、そのような単純なコマンドだけでこれを実行できますかls?私が知っている限り、ls権限を具体的に参照する方法がないようで、検索する特定の権限セットを提供することはできません。

私が見落としたかもしれない他の簡単な方法はありますか?

答え1

find最も簡単な方法です。 zshを使用している場合は、次のものを使用できます。グローバル予選 f(または権限ビットのみを特徴付けるためのさまざまな修飾子)

printf '%s\n' *(f521)

または

printf '%s\n' *(f[u=rx,g=w,o=x])

記号表記法を使用してください(8進表記法が問題になる場合)。D隠しファイルも考慮するには、glob修飾子を追加してください。

記号表記法も併用できますfind

find . -perm u=rx,g=w,o=x

ほとんどの実装には、次のようなものを提供する述語がfindあります。そうでない場合は、いつでも。-lsls -l-exec ls -ld -- {} +

答え2

たぶん同様のものを探しているかもしれません。

ls -l | grep '^.r-x-w-r--'

名前に改行を含む一致する権限を持つファイルの場合、そのファイル名の最初の行のみが報告されます。同様の名前のファイルfoobar<newline>xr-x-w-r--(または同様の名前のファイルへのシンボリックリンク)が存在する場合は、誤検出を提供することもできます。行ベースのユーティリティ(例:)を使用するgrep。印刷できない文字(改行を含む)-qを。ls?

findIMHO、ファイル検索よりも良いツールはありません。シンプルでシンプルで非常に強力です。find ... -exec ...またはを使用すると、find ... -print0 | xargs -0 ...見つかったファイルをさまざまな方法で簡単に操作できます。より良い一般的なツールが見つからないと思います。

答え3

気に入らない場合は、次の標準ツールをfind使用できます。statawk

shopt -s dotglob
awk '/^521/ {print $2}' <(stat -c "%a %n" *) > test.txt

dotglobに隠しファイルを含めるかどうかを設定する必要があります*

答え4

# ls -l | grep -e "-rw-r--r--"

-eこれを使用して、grep必要な権限を持つすべてのファイルを一覧表示します。

関連情報