カテゴリ: Linuxコマンド集 更新日: 2026/02/03

dirname --zeroオプション|出力をヌル文字で区切る方法

dirname --zeroオプション|出力をヌル文字で区切る方法
dirname --zeroオプション|出力をヌル文字で区切る方法

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

生徒

「先生、Linuxでファイル名に空白(スペース)が入っていても安全に処理する方法ってあるんですか?」

先生

「そんなときはdirnameコマンドの--zeroオプションを使うと便利です。出力をヌル文字で区切ってくれますよ。」

生徒

「ヌル文字ってなんですか?」

先生

「ヌル文字は、目には見えない区切り記号のようなもので、改行の代わりに使うことができます。ファイル名にスペースがあっても安心して処理できるんです。」

1. dirname --zeroオプションとは?

1. dirname --zeroオプションとは?
1. dirname --zeroオプションとは?

dirnameコマンドは、指定したパスからディレクトリ部分だけを取り出すLinuxの基本コマンドですが、--zeroオプションをつけると、出力の区切りにヌル文字(\0)を使うようになります。

通常は出力を改行(Enter)で区切りますが、ファイル名に改行や空白が含まれていると処理が不安定になることがあります。そんなときに--zeroオプションが活躍します。

2. ヌル文字とは?初心者向けにやさしく解説

2. ヌル文字とは?初心者向けにやさしく解説
2. ヌル文字とは?初心者向けにやさしく解説

ヌル文字(null character)は、コンピュータの内部で「ここで区切るよ」という意味を持つ特殊な文字です。見た目には何も表示されませんが、改行とは違い、文字列の中にスペースや特殊文字が含まれていても正確に区切ることができます。

Linuxでは、-print0--nullなどと組み合わせて使うことで、ファイル名に空白や改行が含まれているときのトラブルを防げるのです。

3. dirname --zero の基本的な使い方

3. dirname --zero の基本的な使い方
3. dirname --zero の基本的な使い方

それでは、dirnameコマンドに--zeroオプションを付けた基本的な使い方を見てみましょう。


echo -e "/home/user/doc files/report.txt\n/home/user/music/song.mp3" | dirname --multiple --zero

このコマンドでは、2つのパスを入力し、それぞれのディレクトリ部分をヌル文字で区切って出力します。実際の出力は目に見えませんが、プログラムで処理する際には正しく区別されます。

4. findコマンドとの組み合わせ

4. findコマンドとの組み合わせ
4. findコマンドとの組み合わせ

findコマンドと-print0オプションを使えば、スペース入りのファイル名にも安全に対応できます。そしてその出力をdirname --zero --multipleで処理すれば万全です。


find . -name "*.txt" -print0 | dirname --zero --multiple

このようにすることで、たとえ「My Documents」や「資料 フォルダ」のような名前のフォルダでも、問題なく正確に処理が可能です。

5. --zeroは通常の表示には向いていない

5. --zeroは通常の表示には向いていない
5. --zeroは通常の表示には向いていない

--zeroを使うと、出力はすべて「ヌル文字」でつながれるため、ターミナルに表示しても改行されません。

そのため、人間が見る用途ではなく、プログラムやスクリプト内で自動的に処理するために使うのが一般的です。

6. xargsとの連携でさらに活用できる

6. xargsとの連携でさらに活用できる
6. xargsとの連携でさらに活用できる

xargs-0オプションをつけることで、ヌル文字対応になります。たとえば、出力されたディレクトリ一覧に対して処理をかけたいときは、次のように書けます。


find . -name "*.txt" -print0 | dirname --zero --multiple | xargs -0 echo "Found in:"

このように--zeroを活かすことで、安全で確実な一括処理が可能になります。

7. --zeroと--multipleはセットで使うのが基本

7. --zeroと--multipleはセットで使うのが基本
7. --zeroと--multipleはセットで使うのが基本

--zeroオプションは単体では機能しないことがあり、--multipleとセットで使うのが基本です。dirnameが複数の入力を受け付けて、それぞれをヌル文字で分けて出力する、というのが正しい使い方です。

そのため、いつでも下記のようにセットで書くようにしましょう。


dirname --zero --multiple

8. basenameにも--zeroがある

8. basenameにも--zeroがある
8. basenameにも--zeroがある

dirnameとよく比較されるbasenameコマンドにも--zeroオプションがあります。こちらもヌル文字で出力を区切るため、同じように使うことができます。


find . -name "*.jpg" -print0 | basename --zero --multiple

Linuxではファイル名の処理において、ヌル文字による安全な区切りは非常に大切です。どちらのコマンドでも活用してみましょう。

関連記事:
カテゴリの一覧へ
新着記事
New1
テキスト・データ処理
less -Iオプションの使い方を完全ガイド!初心者でもわかる大文字小文字を無視した検索方法
New2
テキスト・データ処理
cat -sオプションの使い方|連続する空行を1行に圧縮して見やすくする方法
New3
テキスト・データ処理
grep -sオプションの使い方を完全ガイド!エラーを非表示にして静かに検索しよう
New4
ファイル・ディレクトリ操作
mv --backupオプションの使い方|バックアップを作成しながら安全に移動する方法
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
ファイル・ディレクトリ操作
cdコマンドとは?Linuxでディレクトリを移動する基本を初心者向けに解説
No.3
Java&Spring記事人気No3
テキスト・データ処理
grepコマンドとは?Linuxで文字列を検索する基本をやさしく解説!
No.4
Java&Spring記事人気No4
ファイル・ディレクトリ操作
lsコマンドの-lオプションでファイルの詳細情報を一覧表示しよう!初心者でもわかる使い方と意味を徹底解説