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

find -print0オプションを完全解説!初心者でもわかる安全なxargsとの連携方法

find -print0オプション|ヌル文字区切りで出力してxargsと安全に連携する
find -print0オプション|ヌル文字区切りで出力してxargsと安全に連携する

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

生徒

「findコマンドでファイル一覧をxargsで処理しようとしたら、うまく動きませんでした…」

先生

「もしかして、スペースが入ったファイル名や日本語ファイル名が混ざっていませんでしたか?」

生徒

「はい、たしかに『メモ.txt』とか『My Documents』っていう名前のファイルがありました!」

先生

「それなら、-print0というオプションを使えば安全にxargsと連携できますよ。詳しく解説しましょう。」

1. find -print0オプションとは?

1. find -print0オプションとは?
1. find -print0オプションとは?

-print0は、Linuxのfindコマンドにおいて、検索結果のファイル名を「ヌル文字(NULL文字)」で区切って出力するオプションです。

通常の-printでは改行で区切られるため、スペースや改行を含むファイル名を正しく扱えないことがありますが、-print0を使うことでこの問題を防げます。

「ヌル文字」とは、人間には見えない特殊な文字で、プログラム同士のやりとりでよく使われる「安全な区切り」のことです。

2. なぜスペース入りのファイル名が問題になるのか?

2. なぜスペース入りのファイル名が問題になるのか?
2. なぜスペース入りのファイル名が問題になるのか?

Linuxのコマンドでは、スペースは「別の引数」として認識されてしまいます。たとえば、「My Documents/レポート.txt」という名前のファイルを扱おうとすると、コマンドが途中で切れてしまうことがあります。

そんなとき、findで-print0を使い、xargsで-0オプションをセットで使うことで、スペースが入っていても安全に処理できます。

3. 基本の使い方(-print0+xargs -0)

3. 基本の使い方(-print0+xargs -0)
3. 基本の使い方(-print0+xargs -0)

以下のように使うことで、スペースや日本語を含むファイル名でも問題なく処理できます。


find . -type f -print0 | xargs -0 ls -l
-rw-r--r-- 1 user user  0 Sep 16 12:00 ./My Documents/メモ.txt
-rw-r--r-- 1 user user  0 Sep 16 12:00 ./data/ログファイル.txt

find-print0を使い、xargs-0を指定することで、「NULL文字区切り」の形式で安全に連携できます。

4. ファイル削除の例(危険操作も安全に)

4. ファイル削除の例(危険操作も安全に)
4. ファイル削除の例(危険操作も安全に)

たとえば、拡張子が.logのファイルをすべて削除したいときにも、安全に操作できます。


find . -name "*.log" -print0 | xargs -0 rm

普通に-printxargsを使うと、スペース入りのファイルで途中までしか認識されず、想定外のファイルが削除されるリスクがあります。初心者ほど-print0-0はセットで覚えておきたいテクニックです。

5. -print0の出力形式を確認してみよう

5. -print0の出力形式を確認してみよう
5. -print0の出力形式を確認してみよう

-print-print0の違いは、出力を目で見るだけではわかりません。実際には次のような違いがあります。


find . -type f -print
./My Documents/メモ.txt
./data/ログファイル.txt

一方、-print0は出力の区切りが「改行」ではなく「NULL文字」になるため、目には見えません。


find . -type f -print0 | od -c
0000000   .   /   M   y       D   o   c   u   m   e   n   t   s   /   メ
(以下省略)

このように、区切りが「\\0(NULL文字)」であることがわかります。

6. 応用:バックアップスクリプトにも応用可能

6. 応用:バックアップスクリプトにも応用可能
6. 応用:バックアップスクリプトにも応用可能

find -print0は、バックアップやファイルコピー処理の際にも活躍します。たとえば、1週間以内に更新されたファイルを圧縮する例です:


find . -type f -mtime -7 -print0 | xargs -0 tar -czf backup.tar.gz

このように、-print0は「安全にまとめて処理したいとき」にとても便利です。

7. sudoやrootでも使える

7. sudoやrootでも使える
7. sudoやrootでも使える

もちろん、-print0は管理者権限(root)で実行する場合でも使えます。たとえば、/var/log配下のログファイルを一覧表示したい場合:


find /var/log -name "*.log" -print0 | xargs -0 ls -lh
-rw-r----- 1 root adm 100K Sep 16 12:00 /var/log/syslog.log
-rw-r----- 1 root adm  80K Sep 16 12:00 /var/log/kern.log

このように、rootユーザーでも-print0を使えば、ミスの少ない安全なバッチ処理が可能になります。

関連記事:
カテゴリの一覧へ
新着記事
New1
ファイル・ディレクトリ操作
find -print0オプションを完全解説!初心者でもわかる安全なxargsとの連携方法
New2
ファイル・ディレクトリ操作
rm --helpオプションを使ってみよう!初心者でもわかるLinuxのヘルプ表示方法
New3
ファイル・ディレクトリ操作
basenameの--helpオプションを使ってヘルプ表示!オプション一覧でLinuxコマンドを理解しよう
New4
ファイル・ディレクトリ操作
stat --helpオプションの使い方|オプション一覧を表示してLinuxコマンドの使い方を確認しよう
人気記事
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
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門