1. ホーム
  2. string

[解決済み] Bashでパス文字列からファイルのサフィックスとパス部分を削除するにはどうすればよいですか?

2022-03-22 15:15:10

質問

のような文字列のファイルパスがあるとします。 /foo/fizzbuzz.bar を取り出すには、bash をどのように使用すればよいのでしょうか? fizzbuzz という文字列があります。

解決方法は?

Bashの#演算子、%演算子を使った方法を紹介します。

$ x="/foo/fizzbuzz.bar"
$ y=${x%.bar}
$ echo ${y##*/}
fizzbuzz

${x%.bar} も可能です。 ${x%.*} でドット以降を削除したり ${x%%.*} は、最初のドット以降をすべて削除します。

$ x="/foo/fizzbuzz.bar.quux"
$ y=${x%.*}
$ echo $y
/foo/fizzbuzz.bar
$ y=${x%%.*}
$ echo $y
/foo/fizzbuzz

ドキュメントは Bashマニュアル . を探します。 ${parameter%word}${parameter%%word} 末尾のマッチングセクション