「カレントディレクトリの中のファイルに使われている『拡張子』の種類と数を調べたい」といった用途には、以下のようなワンライナーが使えます。 for i in *; do echo .${i#*.}; done | sort | uniq -c さきに紹介した変数展開 ${…#…} を使ってカレントディレクトリの各ファイル( * )の『拡張子』部分を取り出し、パイプを使って外部コマンドの「 sort | uniq -c」にわたしています。 これでも動きますが、このままではディレクトリや拡張子のないファイルもソートされ(さらに、よけいな「.」が付けられたうえで)、表示されてしまいます。そこで、これらのファイルを処理対象に含めないようにするならば、たとえば以下のような表現が使えます。 for i in *; do if [ ! -d $i ] && [ -z "${i%%*.*}" ]; then
![シェルスクリプト:ビルトインの test を活用する - Fly high.のブログ](https://cdn-ak-scissors.b.st-hatena.com/image/square/35844353949d28e1cfd4a95b963a23c268ce7f5b/height=288;version=1;width=512/http%3A%2F%2Fhasepy.cocolog-nifty.com%2F.shared-cocolog%2Fnifty_managed%2Fimages%2Fweb%2Fogp%2Fdefault.png)