Linux: find コマンドによって返されたファイルに対して、ファイルの権限を表示する方法 (ls -l のように)

Linux: find コマンドによって返されたファイルに対して、ファイルの権限を表示する方法 (ls -l のように)

次のように、特定の拡張子のファイルを表示するために find コマンドを実行しています。

find $directory -type f -name "*.vm"

ただし、ファイルの権限も確認できるようにしたいと思います (ls -l で表示されるように)。

これはどうすればできるのでしょうか?

答え1

GNU には、使用できるディレクティブがfindあります。 の出力形式は に非常に近いですが、完全に一致するわけではありません。-lsls -l

find のデフォルトのアクションは、何も指定されていない場合は、-print見つかったファイル名とパスを単に出力します。 を追加 (または置換-print)すると-ls、より詳細なリストが表示されます。

何らかの理由で特定の形式が必要な場合は、-printf次のようにします。たとえば、次のようにします。

find . -printf "%M %n %8.8u %8.8g %8.8s %Ax %AX %p\n"

出力形式をほぼ再現しますls -l。(これは異なる日付フォーマットを使用します。ls の動作を再現することもできるかもしれません。find使用可能なフォーマット指定子の詳細と、printf(3)数字の機能の詳細については、マニュアル ページを参照してください。)

一般的には、避ける-exec可能であれば使用し、-execを使用する必要がある場合は、欲しい+1 回の呼び出しで複数のファイル名を指定するのではなく、使用してみてください{}。そうしないと、条件に一致するファイルごとにコマンドが 1 回実行されるため、ファイルの数が多い場合はパフォーマンスが大幅に低下する可能性があります。

また、再帰動作が必要ない場合、最も簡単な解決策は最初から ls を使用することです。ls -ld $directory/*.vm

答え2

-lsオプションを に指定できますfind。または、特定の形式が必要な場合は を使用します-exec

find "$directory" -type f -name '*.vm'  -exec ls -l {} \;

関連情報