サブフォルダ内のファイル数を数え、表示を並べ替えます。

サブフォルダ内のファイル数を数え、表示を並べ替えます。

だから私は次のスクリプトを持っています

find "my-path-here"  -maxdepth 1 -mindepth 1 -type d -exec sh -c 'echo "{} : $(find "{}" -type f | wc -l | sort)" file\(s\)' \;

すべてのフォルダ(深さ= 1)からファイルを(再帰的に)計算します。

以下のスクリーンショットは/ usrに対して実行されており、ご覧のとおり、フォルダはアルファベット順に並べ替えられていません。

コマンドをアルファベット順に並べ替えるように変更する方法についてのアイデアはありますか?

ありがとう

ここに画像の説明を入力してください。

答え1

1つのアプローチは、GNUを想定し、findファイル名に改行文字が含まれていないと仮定することです。

find /some/dir -type f -printf '%P\n' | grep / | cut -d/ -f1 | sort | uniq -c

出力例:

 5322 X11R6
  316 bin
   89 lib
 2165 libdata
   50 libexec
19220 local
   10 mdec
  206 sbin
 8970 share

必要にawk応じて、またはを使用して書式を設定できます。sed

関連情報