カテゴリ: Linuxコマンド集 更新日: 2025/11/18

basenameのSUFFIX指定で拡張子を除いてファイル名を取得する方法を解説!初心者向けLinuxコマンド講座

basename SUFFIX指定|拡張子を除外してファイル名を取得する方法
basename SUFFIX指定|拡張子を除外してファイル名を取得する方法

先生と生徒の会話形式で理解しよう

生徒

「Linuxでファイルの名前だけを取り出したいんですけど、拡張子はいらないんです。どうすればいいですか?」

先生

「その場合は、basenameコマンドのSUFFIX指定を使うと便利ですよ。」

生徒

「SUFFIXってなんですか?難しそう…」

先生

「心配しないで。とてもシンプルだから、わかりやすく説明しますね!」

1. basenameコマンドとは?

1. basenameコマンドとは?
1. basenameコマンドとは?

basenameコマンドは、ファイルパス(例:/home/user/file.txt)の中からファイル名の部分だけを取り出すためのLinuxコマンドです。

このコマンドは、フォルダの中にあるファイルの「名前」だけを知りたいときに使われます。たとえば、シェルスクリプトの中でファイル名だけを表示したいときなどに便利です。

2. basenameの基本的な使い方

2. basenameの基本的な使い方
2. basenameの基本的な使い方

まずは、拡張子を除外しない通常のbasenameコマンドの使い方を見てみましょう。


basename /home/user/photos/image.jpg
image.jpg

このように、ファイル名だけが取り出されます。しかし、.jpgの部分(拡張子)は残ったままです。

3. SUFFIXを指定して拡張子を除外する方法

3. SUFFIXを指定して拡張子を除外する方法
3. SUFFIXを指定して拡張子を除外する方法

basenameコマンドでは、第2引数に除外したい文字列(SUFFIX)を指定できます。これにより、ファイル名から拡張子を取り除いた形で取得できます。

次のように使います:


basename /home/user/photos/image.jpg .jpg
image

このように.jpgが除かれて、ファイル名だけが表示されました。これがSUFFIX指定の威力です!

4. 複数の拡張子がある場合は?

4. 複数の拡張子がある場合は?
4. 複数の拡張子がある場合は?

たとえば、次のようなファイルがあるとします:


basename /home/user/data/archive.tar.gz .gz
archive.tar

ここでは.gzだけが除かれました。もし.tar.gzの両方を取り除きたい場合は、完全な拡張子をSUFFIXに指定しましょう。


basename /home/user/data/archive.tar.gz .tar.gz
archive

このようにすると、すべて除外されてシンプルな名前だけが取り出せます。

5. 拡張子以外の文字列も除外できる?

5. 拡張子以外の文字列も除外できる?
5. 拡張子以外の文字列も除外できる?

実は、basenameのSUFFIX指定は拡張子に限りません。ファイル名の末尾に一致する文字列であれば、どんなものでも除外できます。


basename /home/user/report_final_draft report_final_
draft

このように、report_final_という文字列が削除されて、draftだけが残ります。

6. 応用:シェルスクリプトで使う場合

6. 応用:シェルスクリプトで使う場合
6. 応用:シェルスクリプトで使う場合

SUFFIXを指定したbasenameは、シェルスクリプトでのログ出力や処理対象の名前取得などにも便利です。

以下はファイル名から拡張子を取り除いて変数に代入する例です:


FILENAME=$(basename /path/to/movie.mp4 .mp4)
echo $FILENAME
movie

このようにすれば、拡張子のないシンプルな名前を変数に格納して使うことができます。

7. 他の類似コマンドとの違い

7. 他の類似コマンドとの違い
7. 他の類似コマンドとの違い

basenameはファイル名を抽出するためのコマンドですが、似た用途を持つLinuxコマンドにdirnameがあります。

  • basename:ファイル名だけを取り出す
  • dirname:ファイルのパス(ディレクトリ)だけを取り出す

例を見てみましょう:


dirname /home/user/image.png
/home/user

basename /home/user/image.png .png
image

このように、使い分けることで柔軟なファイルパスの処理が可能になります。

8. ファイル名がピリオドを含む場合の注意点

8. ファイル名がピリオドを含む場合の注意点
8. ファイル名がピリオドを含む場合の注意点

例えばmy.backup.tar.gzのように、ファイル名にピリオドが複数含まれている場合、正確に除外したいSUFFIXを指定しないと意図しない結果になることがあります。

次の例を見てください:


basename my.backup.tar.gz .gz
my.backup.tar

このように、.gzだけが除外されます。もし.tar.gz全体を削除したいなら、明示的に指定しましょう。


basename my.backup.tar.gz .tar.gz
my.backup
関連記事:
カテゴリの一覧へ
新着記事
New1
テキスト・データ処理
grep -hオプションの使い方|ファイル名を表示せずに一致行だけを出力する方法
New2
ファイル・ディレクトリ操作
find -mindepthオプションの使い方を完全ガイド!検索の最小深さを指定して効率よくファイル検索
New3
ファイル・ディレクトリ操作
Linuxのlsコマンド-iオプション完全ガイド!初心者でもわかるi-node番号の表示方法
New4
ファイル・ディレクトリ操作
stat --dereferenceオプションの使い方を解説|-Lと同じようにシンボリックリンク先の情報を表示しよう
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
statコマンドとは?Linuxでファイルやディレクトリの詳細情報を確認する基本