空白を含むファイル名のファイルをfindとxargsの組み合わせで処理する方法 †スペースを含むファイル名のファイルをfind, xargsを使用して処理する方法を以下に記します。 関連記事 †
findコマンドとxargsコマンド †findコマンドとxargsコマンドの組み合わせで、複数のファイルをまとめて処理することはLinuxでのファイル処理の基本です。 % find /home/user0 -name \*.txt -print | xargs wc -l 29 /home/user0/hoge.txt 15 /home/user0/gere.txt 44 合計 % 空白を含むファイル名 †しかし、以下のようにファイル名に空白を含むものがあった場合、このコマンドは失敗します。 % ls -l /home/user0/*.txt -rw-rw-r-- 1 user0 user0 552 8月 1 20:13 /home/user0/gere.txt -rw-rw-r-- 1 user0 user0 1300 8月 1 20:13 /home/user0/hoge hoge.txt % % find /home/user0 -name \*.txt -print | xargs wc -l wc: /home/user0/hoge: そのようなファイルやディレクトリはありません wc: hoge.txt: そのようなファイルやディレクトリはありません 15 /home/user0/gere.txt 15 合計 % findの -print0 オプション、xargsの -0 オプション †このような場合には、findの-printオプションの代りに、-print0オプションを使い、xargsには-0オプションを追加します。 % find /home/user0 -name \*.txt -print0 | xargs -0 wc -l 29 /home/user0/hoge hoge.txt 15 /home/user0/gere.txt 44 合計 % このオプションを使用すると、ファイルのリストの区切り文字に空白ではなく\\0(ヌル文字)という制御文字を使用します。 以上、空白を含むファイルをfindとxargsの組み合わせで処理する方法についてでした。 |