basename – パスからディレクトリ部分を取り除きファイル名を取得するコマンド

カラム/フィールド操作

basename コマンドは、指定した ファイルパスからディレクトリ部分を除去し、ファイル名だけを表示 するコマンドです。
また、拡張子を指定して取り除くことも可能で、スクリプト内でファイル名を抽出する際によく利用されます。

構文(Syntax)

basename パス [SUFFIX]

主なオプション一覧

オプション説明使用例
(なし)パスからディレクトリ部分を削除してファイル名のみ表示basename /home/user/file.txt
SUFFIX指定した接尾辞(拡張子など)を削除basename /home/user/file.txt .txt
-a複数の引数を処理basename -a /etc/passwd /etc/hosts
-s SUFFIX指定した接尾辞を削除(SUFFIX引数と同じだが明示的に書ける)basename -s .log logfile.log
--helpヘルプを表示basename --help
--versionバージョン情報を表示basename --version

実行例

ファイル名を取得

basename /home/user/file.txt

出力:

file.txt

拡張子を除去して取得

basename /home/user/file.txt .txt

出力:

file

-s オプションで接尾辞を削除

basename -s .log /var/log/syslog.log

出力:

syslog

複数ファイルを処理

basename -a /etc/passwd /etc/hosts

出力:

passwd
hosts

エラー例(引数なし)

basename

出力例:

basename: missing operand
Try 'basename --help' for more information.

関連コマンド

  • dirname : パスからディレクトリ部分を取得
  • realpath : 絶対パスを取得
  • readlink : シンボリックリンクを解決して実パスを表示

備考

  • basename は GNU Coreutils に含まれるコマンドですが、多くのシェルでは組み込み関数や代替方法(パラメータ展開 ${var##*/})も利用可能です。
  • basename はパス解析に便利ですが、大量処理やスクリプトでは シェル展開を使う方が高速 です。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント