.png)
次のように、特定の拡張子のファイルを表示するために find コマンドを実行しています。
find $directory -type f -name "*.vm"
ただし、ファイルの権限も確認できるようにしたいと思います (ls -l で表示されるように)。
これはどうすればできるのでしょうか?
答え1
GNU には、使用できるディレクティブがfind
あります。 の出力形式は に非常に近いですが、完全に一致するわけではありません。-ls
ls -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 {} \;