![特定のサブディレクトリ内のファイルを一覧表示する](https://rvso.com/image/1558685/%E7%89%B9%E5%AE%9A%E3%81%AE%E3%82%B5%E3%83%96%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E5%86%85%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E4%B8%80%E8%A6%A7%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B.png)
フォルダ構造は次のようになります:
/1/a/x
/1/b/y
/2/a/z
/2/b/d
/3/a/r
/3/b/e
'a' フォルダー内のサブフォルダーにあるすべてのファイルのファイルとファイルサイズを一覧表示したいです。find を使用してみましたが、うまくいきません。適切なコマンドは何でしょうか?
答え1
サイズとフルパスを印刷するには、これを試してください。
find /[123]/a/* -type f -printf '%s %p\n'
見るman find
で使用できる他の書式文字列については、 を参照してください-printf
。特に、の代わりに%P
または を使用したり、の代わりに を使用したりすることができます。%f
%p
%b
%s
[123]
1 ~ 3 の範囲の 1 桁の数字の名前に一致します。*
例が説明しようとしている現実と正確に一致しない場合は、これを拡張するか、もう少し制限された名前に一致させるとよいでしょう。
CentOSではGNUがfind
標準であるはずですが、適切に移植可能なコードが必要な場合は、おそらく を使用しますfind ... -exec stat {} \;
(ただし、これstat
も移植性の問題があることに注意してください。コマンドはほとんどのプラットフォームに存在するはずですが、特定のものを印刷する方法は実装によって異なります)。別のオプションは、find ... -ls
しかし、あなたは解析しますls
。
サブディレクトリをトラバースする必要がない場合は、 は必要ありませんfind
。
stat -c '%s %n\n' /[123]/a/*/*