[Bash] ファイル名から拡張子を取り除く

作成日: 2026年09月24日

Bash でファイル名の末尾の拡張子を取り除くには、パラメータ展開の ${変数%.*} を使用します。

filename="archive.tar.gz"
echo "${filename%.*}"

実行結果は下記のとおりです。

archive.tar

%.* は、変数の末尾から . で始まる最短の文字列を削除します。そのため、archive.tar.gz では最後の .gz だけが削除されます。

拡張子を持たないファイル名では、そのままの値が返ります。

filename="README"
echo "${filename%.*}"

実行結果は下記のとおりです。

README
Bash