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

basenameコマンドとは?Linuxでパスからファイル名を抽出する基本

basenameコマンドとは?Linuxでパスからファイル名を抽出する基本
basenameコマンドとは?Linuxでパスからファイル名を抽出する基本

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

生徒

「Linuxで、ファイルのパスからファイル名だけを取り出す方法ってありますか?」

先生

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

生徒

「basenameってどんなコマンドなんですか?」

先生

「じゃあ、一緒にbasenameコマンドの使い方を学んでみましょう!」

1. basenameコマンドとは?

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

basenameコマンドは、Linuxでパス(ファイルの場所)からファイル名だけを取り出すために使うコマンドです。たとえば、/home/user/document.txtという長いパスがあったときに、「document.txt」というファイル名だけを取り出すことができます。

ファイルのパスには、フォルダ(ディレクトリ)の名前や区切りが含まれていて、初心者には少しわかりにくいことがあります。しかしbasenameを使えば、その中から必要な名前だけを簡単に取り出すことができます。

2. basenameコマンドの基本的な使い方

2. basenameコマンドの基本的な使い方
2. basenameコマンドの基本的な使い方

まずは、最も基本的な使い方を見てみましょう。以下のように、パスを引数として指定します。


basename /home/user/file.txt
file.txt

このように、パスの中から最後の部分、つまりファイル名だけが表示されるのが特徴です。

3. ディレクトリでも使えるの?

3. ディレクトリでも使えるの?
3. ディレクトリでも使えるの?

basenameコマンドは、ファイルだけでなくディレクトリにも使えます。例えば次のような場合です。


basename /var/log/apache2
apache2

この例では、「/var/log/apache2」というフォルダの中から、最後の「apache2」だけを取り出しています。フォルダでも最後の部分だけを抜き出せる、ということです。

4. 拡張子を取り除く使い方

4. 拡張子を取り除く使い方
4. 拡張子を取り除く使い方

basenameコマンドには、ファイル名から特定の文字列(通常は拡張子)を削除する機能もあります。次のように使います。


basename report.csv .csv
report

このように、指定した拡張子部分「.csv」だけを削除して表示することができます。「.txt」や「.log」なども同じように扱えます。

5. basenameコマンドの使用例をもっと見てみよう

5. basenameコマンドの使用例をもっと見てみよう
5. basenameコマンドの使用例をもっと見てみよう

実際に現場でよく使われるケースをいくつか紹介します。以下のような場面で活躍します。

スクリプト内でファイル名を取り出したいとき


filepath="/home/user/data/report.log"
filename=$(basename "$filepath")
echo "$filename"
report.log

このように、変数の中にあるパスから、ファイル名だけを変数に取り出す使い方は非常に多くの場面で活躍します。

シェルスクリプトでログ出力先を決めたいとき


logfile="/var/log/nginx/access.log"
basename "$logfile" .log
access

このように拡張子だけを除いたログファイル名を使うことで、処理の流れを柔軟に制御することができます。

6. dirnameとの違いに注意しよう

6. dirnameとの違いに注意しよう
6. dirnameとの違いに注意しよう

basenameと似た名前のコマンドにdirnameがあります。こちらはパスの中の「フォルダの部分」だけを取り出すコマンドです。


dirname /home/user/file.txt
/home/user

このように、basenameファイル名だけを取り出すのに対して、dirnameそのファイルがあるフォルダの場所を取り出す、という違いがあります。

7. basenameのオプションは少なめ

7. basenameのオプションは少なめ
7. basenameのオプションは少なめ

basenameは非常にシンプルなコマンドなので、オプションはほとんどありません。主に次のようなものがあります。

  • --version:バージョン情報を表示
  • --help:使い方のヘルプを表示

basename --version
basename (GNU coreutils) 8.32
Copyright (C) 2020 Free Software Foundation, Inc.

8. basenameコマンドを活用するコツ

8. basenameコマンドを活用するコツ
8. basenameコマンドを活用するコツ

basenameは、単体で使うだけでなく、他のコマンドやスクリプトと組み合わせることで真価を発揮します。特に、for文などの繰り返し処理の中で、ファイル名を取り出して処理を分けるときなどに非常に便利です。


for path in /home/user/*.txt; do
  name=$(basename "$path" .txt)
  echo "ファイル名は $name です"
done
ファイル名は report です
ファイル名は data です
ファイル名は memo です

このように、複数のファイルに対して一括でファイル名を取り出して処理することができます。

まとめ

まとめ
まとめ

今回の記事では、Linuxでパス文字列からファイル名やディレクトリ名だけを抽出するために使われるbasenameコマンドについて、基礎から実践的な使い方まで詳しく解説してきました。basenameは非常にシンプルなコマンドですが、シェル操作やシェルスクリプトの中では欠かせない存在であり、Linuxを使いこなすうえで必ず身につけておきたい基本コマンドの一つです。

Linuxでは、ファイルやディレクトリはパスという形で表現されます。パスには階層構造が含まれており、長くて読みにくくなることも少なくありません。basenameコマンドを使うことで、そのパスの中から一番最後の要素だけを取り出すことができ、ファイル名やディレクトリ名を簡単に扱えるようになります。

基本的な使い方はとても簡単で、basenameの後にパスを指定するだけです。これだけで、フルパスの中からファイル名のみが表示されます。さらに、第二引数として拡張子を指定すれば、特定の文字列を削除した状態で表示することも可能です。この機能は、拡張子を除いた名前を使って処理を分岐したい場合や、ログファイル名やデータファイル名を加工したい場面で特に役立ちます。

basenameはファイルだけでなくディレクトリにも使える点も重要なポイントです。Linuxではディレクトリもパスで表現されるため、最後のディレクトリ名だけを取得したいときにもbasenameが活躍します。ディレクトリ構造を扱うスクリプトや、処理対象の名前を動的に決めたい場合など、幅広い用途があります。

また、basenameは単体で使うよりも、シェルスクリプトやfor文、変数展開と組み合わせることで本領を発揮します。大量のファイルを一括で処理する場面では、パスからファイル名を取り出して処理内容を切り替える、といった使い方がよく行われます。Linuxの自動化や効率化を目指すうえで、basenameの理解は避けて通れません。

以下は、一般ユーザーでbasenameを使い、複数のファイルパスから拡張子を除いたファイル名を取得する代表的な例です。


for path in /home/user/*.log; do
  name=$(basename "$path" .log)
  echo "$name"
done
access
error
system

このように、basenameを使えば、パスの扱いがぐっと分かりやすくなり、処理の柔軟性も高まります。dirnameコマンドとの違いを正しく理解し、「ファイル名が欲しいときはbasename」「ディレクトリの場所が欲しいときはdirname」と使い分けることが、Linux操作をスムーズにするコツです。

basenameコマンドはオプションが少なく覚えやすいため、Linux初心者でもすぐに実践で使えるのが魅力です。一方で、スクリプトの中では非常に重要な役割を担うため、早い段階で慣れておくことで、今後のLinux学習や実務作業が格段に楽になります。

先生と生徒の振り返り会話

生徒「basenameを使えば、長いパスからファイル名だけを簡単に取り出せるんですね。」

先生「その通りです。シェルスクリプトでは特に出番が多いコマンドですよ。」

生徒「拡張子を指定して削除できるのも便利だと思いました。」

先生「ログ処理やファイル名の加工では、よく使われる書き方ですね。」

生徒「dirnameとの違いも分かってきました。役割が逆なんですね。」

先生「良い理解です。basenameとdirnameを使い分けられるようになると、Linuxのパス操作は一気に楽になりますよ。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

basenameコマンドとは何ですか?Linuxでの役割を教えてください。

basenameコマンドは、Linuxでファイルのパスからファイル名だけを抽出するために使う基本的なコマンドです。長いパスから不要な部分を取り除き、ファイル名だけを取得できます。
関連記事:
カテゴリの一覧へ
新着記事
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でファイルやディレクトリの詳細情報を確認する基本