bash では、ディレクトリとそのサブディレクトリで特定のタイプ (「*.txt」など) のファイルを検索するにはどうすればよいですか。次に、ファイルをサイズとフルパスとともにサイズの降順に表示します。
以下を試しましたが、うまくいきません。
find . -type f -name "*.txt" -print0 | ls -sS
これどうやってするの?
これを行うには、GNU find の printf オプションを使用できます。
find "$PWD" -type f -name '*.txt' -printf "%s %h/%f\n" | sort -rg
サイズをバイト単位ではなく KB 単位で表示するには:
find "$PWD" -type f -name '*.txt' -printf "%k %h/%f\n" | sort -rg
find . -type f -name "*.txt" -print0 | xargs -0 ls -sS
一致するファイルのロードとロードがない限り、機能するはずです(デフォルトが何であるかを確認するには、man xargs(1))
以下のSwissのコメントが100%正しい場合xargs -0
は、使用しているので進むべき道ですfind -print0
find . -type f -name "*.txt" | xargs -i{} stat {} --format "%012s %n" | sort -r
サイズをバイト単位で指定します。