Muni Bus

パソコンの操作方法や設定方法を忘れないようにメモしています。ブログを一回引っ越ししているので、所々表示がかなり乱れています・・・

【bash】シェル変数に代入されている、パスを含むファイル名から拡張子を取り除く

パターン照合演算子%を使えばよい。以下は拡張子を1つ、2つ取り除く例。シェル変数stに拡張子を含むファイル名のような文字列を代入して試している。

$ st=a.bc.def.ghij
$ echo ${st%.*}
a.bc.def
$ echo ${st%.*.*}
a.bc

パターン照合演算子%は一致する最小部分を削除した文字列を返す。一方で、パターン照合演算子%%は、一致した最長部分を削除した文字列を返す。拡張子をすべて削除したいのであれば、こちらを使うと便利。

$ st=a.bc.def.ghij
$ echo ${st%%.*}
a