ツリー構造内のすべてのファイル拡張子をリストし、各ファイル拡張子の発生回数を計算します。

ツリー構造内のすべてのファイル拡張子をリストし、各ファイル拡張子の発生回数を計算します。

ツリーマップにすべてのファイル拡張子を一覧表示し、各ファイル拡張子の発生回数を計算する単純なシェル関数(bash優先)を探しています。

たとえば、list_extensions .次の内容が返されます。

pdf 134
tex 42
cpp 30
...

拡張子のないファイルも計算できるという利点があります。

答え1

don_crisstiがコメントで述べたように、この質問は重複して答えを見つけることができます。ここ。ただし、拡張子のないファイルの数も計算したい場合があります。私の試みは次のとおりです。

echo no_ext $(find . -type f -exec sh -c 'echo $(basename "{}")' \; | grep -v '\.' | wc -l)

その後のコマンドとその目的を説明しようとします。

まず、findを使用して通常のファイルを見つけ、やや退屈な方法でbasenameコマンドを介してそのパスを渡します。

find . -type f -exec sh -c 'echo $(basename "{}")' \;

次に、リバースモードでgrepを使用して、ピリオドなしでファイル名を簡単に検索できます。

grep -v

最後のステップは行数を計算することです。

wc -l

これはエコーに供給することができます。これらすべての結果を上記のコマンドに結合します。

編集:私は使用しますコマンドの置き換え計算された数値にラベル(この場合は「no_ext」)を連結します。エコーなしで角括弧の間で個別にコマンドを実行して、計算された数だけを印刷することもできます。

関連情報