5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

bashで拡張子を除いたファイル名を取得する

Posted at

方法

長いこと 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 コマンド。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?