特定の拡張子に○○する的なことはよくある
シェルスクリプトを書いていると拡張子で判別したいことはよくある。
bashで拡張子を取得するには
bashのブレース展開が一番ラクです。
path=/etc/apache2/httpd.conf extension=${path##*.} #=> conf
特定のディレクトリの中で拡張子を取得するには
xargs と組み合わせる
find | xargs -I@ bash -c 'path=@; echo ${path##*.}'
そもそも拡張子の取得が必要ですか?
そのシェルスクリプトで拡張子をもとに検索をしたいなら、拡張子を取る必要はないかもしれないですよ。
指定した拡張子を検索
grep . -R --include=*.php
指定した拡張子のファイルを列挙する。
find -type f -name '*.php'
ファイル名がマッチするかどうかなら、拡張子を取らなくても正規表現やglob のマッチングで倒せる
正規表現でマッチング.
[[ $path =~ conf$ ]];
glob マッチングで conf にマッチさせる。
[[ $path = *conf ]];
拡張子がとれたら?
uniq -c や sort で並べ替えると便利でしょうね。
他には?
シェル・スクリプトを使うと組合せは無限大なのがいいですよね。