ツリーマップにすべてのファイル拡張子を一覧表示し、各ファイル拡張子の発生回数を計算する単純なシェル関数(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」)を連結します。エコーなしで角括弧の間で個別にコマンドを実行して、計算された数だけを印刷することもできます。