web-dev-qa-db-ja.com

ディレクトリ内のすべての種類のファイルとその数を検索するシェルスクリプト

Shell scriptまたはaliasを記述して、ディレクトリ内のさまざまな種類のファイルの数を調べたいと思います。たとえば、スクリプトの出力例は次のようになります。

*.h      20
*.c      40
*.cpp    10
Makefile 3
7
manav m-n
find . -type f -name '*.*' -exec sh -c 'echo ${0##*.}' {} \; | sort | uniq -c | sort -nr

echo ${0##*.}は、ファイルの拡張子を示します。出力をsortにパイプしてから、uniqで一意の行をカウントします。

いくつかの追加:

  • uniqの出力は出現回数に応じてソートされないため、ソートする場合は、数値ソート(-nr)に再度パイプする必要があります。
  • 現在のディレクトリのみを検索する場合は、findコマンドに-maxdepth 1を追加します。
  • awk '{print $2, $1}'にパイプして、拡張後のカウントを表示します。
8
slhck