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はパス解析に便利ですが、大量処理やスクリプトでは シェル展開を使う方が高速 です。
参考
- manページ: man7.org basename(1)
- GNU Coreutils: https://www.gnu.org/software/coreutils/

コメント