解決策 1:
/var/cache$ sudo find ./ -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq -c | sort -n
1 .6
1 .cache
1 .noconf
1 .php
1 .sl
2 .bin
2 .el
2 .tdb
4 .baseA
4 .baseB
4 .dat
4 .DB
27 .db
221 .deb
説明は次のとおりです:
find ./ -type f
ディレクトリではなく、ファイルのみを検索
grep -E ".*\.[a-zA-Z0-9]*$"
拡張子付きのフィルタ ファイル
sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/'
パスとファイル名を削除し、拡張子のみを保存
sort | uniq -c | sort -n
並べ替え、一意、および並べ替え
解決策 2:
Linux (gnu grep) を使用しているため、ここで Perl RE (PCRE) -P
を使用します。 そして grep の -o
オプション。 @bindbn の回答を有力な候補として取り上げます:
find . -type f | grep -Po '\.([\w\d])*$' | sort | uniq -c | sort -n