basenameの--multipleオプションで複数パスを一括処理!初心者にもわかるLinuxコマンド入門
生徒
「basenameって1個ずつしかファイル名を取り出せないんですか?」
先生
「実は、複数のパスをまとめて処理できる--multipleオプションがあるんですよ。」
生徒
「へぇ、それなら一括で処理できて便利ですね!どう使うんですか?」
先生
「それじゃあ、一緒に--multipleの使い方を学んでみましょう。」
1. basenameコマンドとは?
basenameコマンドは、LinuxやUnixで使われる基本的なコマンドのひとつです。ファイルのパス(道筋)からファイル名だけを取り出すことができます。
たとえば、/home/user/image.pngというファイルのパスがあった場合、basenameを使えばimage.pngだけを表示できます。
2. 通常のbasenameの使い方(おさらい)
まずは基本的な使い方を見てみましょう。
basename /home/user/music/song.mp3
song.mp3
このように、ファイル名だけを表示できます。ただし、この方法では1つのファイルパスしか扱えません。
3. --multipleオプションとは?
--multipleは、basenameコマンドに用意された複数のパスを一括で処理するためのオプションです。通常のbasenameでは1つのパスしか指定できませんが、--multipleを使えば、2つ以上のパスをまとめて処理できます。
このオプションは、「毎回1つずつコマンドを打つのが面倒」「複数のファイル名だけを一括で取り出したい」といった場面でとても便利です。
4. --multipleの基本的な使い方
実際の使い方を見てみましょう。
basename --multiple /home/user/photos/cat.jpg /home/user/photos/dog.jpg
cat.jpg
dog.jpg
このように、2つのパスを一度に処理して、それぞれのファイル名だけを出力できます。
5. 拡張子を除外したい場合は?
--multipleを使う場合でも、SUFFIX(接尾辞)を一緒に指定することができます。
basename --multiple --suffix=.jpg /images/a.jpg /images/b.jpg
a
b
このように--suffixオプションを追加することで、拡張子.jpgを除外してファイル名だけを取得できます。
6. 実行結果の順番に注意
--multipleオプションでは、指定したパスの順番どおりに出力されます。ファイル名だけを表示したいときに、順序が大事な場合もあるので注意しましょう。
basename --multiple /data/x.txt /data/y.txt /data/z.txt
x.txt
y.txt
z.txt
このように、指定した順番どおりにファイル名が表示されます。
7. lsコマンドとの組み合わせ例
大量のファイル名を処理したいときは、lsコマンドと組み合わせてxargsを使うことで、さらに便利になります。
ls /var/log/*.log | xargs basename --multiple
syslog.log
auth.log
kernel.log
このように、.logファイルのパス一覧からファイル名だけを取り出す処理が一括でできます。
8. dirnameとの違いを確認しよう
basenameとよく似たコマンドにdirnameがあります。こちらは、ファイル名ではなく、パス(フォルダ部分)だけを取り出すためのコマンドです。
dirname /home/user/data/file.txt
/home/user/data
これに対してbasenameはファイル名だけを出力します。
basename /home/user/data/file.txt
file.txt
それぞれ役割が異なるので、場面に応じて使い分けましょう。
9. basename --multipleが使えない場合の代替方法
環境によっては、古いバージョンのbasenameでは--multipleオプションが使えないことがあります。
その場合は、for文を使って1つずつ処理する方法もあります。
for path in /tmp/a.txt /tmp/b.txt; do basename "$path"; done
a.txt
b.txt
これは少しだけプログラミングっぽい書き方になりますが、複数ファイルを処理する裏技のような使い方です。
まとめ
basename --multipleオプションのポイント総整理
今回の記事では、Linuxコマンドの中でも基本でありながら、意外と知られていない
basenameコマンドの--multipleオプションについて詳しく学びました。
basenameは、ファイルパスからファイル名だけを取り出すためのシンプルなコマンドですが、
--multipleを使うことで複数のパスを一度に処理でき、作業効率が大きく向上します。
Linux環境でのファイル操作、ログ管理、シェルスクリプト作成、バッチ処理など、
さまざまな場面で役立つ知識です。
通常のbasenameは1つのパスしか指定できませんが、
basename --multipleを使えば、複数のファイルパスを並べて指定するだけで、
それぞれのファイル名を順番どおりに取得できます。
この動きは非常に直感的で、Linux初心者でも理解しやすいのが特徴です。
パスが長くなりがちなLinuxのディレクトリ構成において、
ファイル名だけを取り出す場面は想像以上に多く、覚えておいて損はありません。
--suffixオプションとの組み合わせ
また、--multipleは--suffixオプションと組み合わせて使うことで、
拡張子を除外したファイル名を取得できる点も重要です。
画像ファイル、ログファイル、設定ファイルなど、拡張子が決まっている場合は、
拡張子を除いた名前だけを扱いたいケースが多くあります。
そのような場面で、basenameのこの機能はとても実用的です。
basename --multiple --suffix=.log /var/log/syslog.log /var/log/auth.log
syslog
auth.log
このように、拡張子を意識せずにファイル名だけを扱えるため、 後続の処理やスクリプトの可読性も高まります。 Linuxコマンドは小さな部品を組み合わせて使う文化があるため、 basenameの出力結果を他のコマンドへ渡す使い方もよく行われます。
lsやxargsとの組み合わせの重要性
記事の中で紹介したように、lsやxargsと組み合わせることで、
basenameはさらに強力になります。
ディレクトリ内に大量のファイルがある場合でも、
一括でファイル名だけを抽出できるため、日常的なLinux操作がかなり楽になります。
特にサーバー管理やログ解析を行う場面では、頻繁に登場するテクニックです。
ls /var/log/*.log | xargs basename --multiple
syslog.log
auth.log
kernel.log
このような使い方を覚えておくと、Linuxコマンドを単体で覚えるだけでなく、 組み合わせて使う発想も自然と身につきます。 初心者のうちから「つなげて使う」意識を持つことは、 Linuxスキルを伸ばすうえでとても大切です。
dirnameとの違いを正しく理解する
basenameとdirnameの違いを整理した点も、今回の大事なポイントです。 basenameはファイル名を取得し、dirnameはディレクトリパスを取得します。 この役割の違いを理解しておくことで、ファイルパスを自由に分解できるようになります。 Linuxコマンドでは、パス操作が頻繁に出てくるため、 この2つのコマンドはセットで覚えるのがおすすめです。
先生と生徒の振り返り会話
生徒
「basenameって、ただファイル名を表示するだけのコマンドだと思っていましたけど、
--multipleを使うと一気に便利になりますね。」
先生
「そうですね。Linuxコマンドは、最初は小さな機能に見えても、 オプションを知ることで使い道が一気に広がることが多いです。」
生徒
「複数のファイルをまとめて処理できるのは、作業ミスも減りそうですし、 シェルスクリプトでも使えそうだと感じました。」
先生
「その感覚はとても大切です。basenameはログ処理や自動化処理でもよく使われます。 ファイル名だけを正確に扱えるようになると、Linux操作が一段レベルアップしますよ。」
生徒
「basenameとdirnameを組み合わせれば、パスの扱いも怖くなくなりそうです。 これからコマンドを読むときの理解も深まりそうですね。」
先生
「その通りです。今日学んだbasename --multipleの使い方を、 日々のLinux操作の中で少しずつ使ってみてください。 実際に使うことで、自然と身についていきます。」