方法
長いこと sed
と組み合わせて対処してましたが
basename
コマンドだけでできることを知りました。
basename {パス} {拡張子}
例
$ basename /path/to/somewhere/foo.txt .txt
foo
basename コマンド
基本
基本構文
basename string [suffix]
-
string
の先頭から最後に出現した/
までを取り除く - その結果の文字列が
suffix
で終わっていればその部分を取り除く
つまり拡張子に限らず次のような使い方が可能。
$ basename /path/to/somewhere/foo20190101.txt 20190101.txt
foo
その他
オプション
-a : string を複数受け取る
-s : -a オプションを付けた場合の suffix 指定
複数指定できる場合の実用的な例が思いつかないですが、
上記のオプションを使ってたとえば次のようなことも可能。
$ basename -s "円" -a 200円 150円 300円
200
150
300
確認環境
macOS, Linux(Ubuntu) 標準の basename
コマンド。