2021-02-03

find & xargs

Webを検索していたら「find mostly doesn't need xargs today on modern Unixes」という記事を見つけました。この記事の趣旨は「今どきのUNIXならfindxargsは必要ない」という事かと思いますが、むしろ初めてfindのオプション「-print0」とxargsのオプション「-0」の存在を知りました。


UNIXでは空白文字でコマンド行を区切りので、Microsoft Windowsでよくみられる「空白文字を含むファイル」を扱うと、意図しない結果に戸惑います。

furusawa@tpe530c> ls "Microsoft Windows like filename.txt"

Microsoft Windows like filename.txt

furusawa@tpe530c> find . -type f | xargs ls

ls: ./Microsoft: No such file or directory

ls: Windows: No such file or directory

ls: filename.txt: No such file or directory

ls: like: No such file or directory


このような状況が想定される場合、単純にfindxargsが使えないので、いろいろな回避策を駆使して対応していました。ところが上述したオプションを使えば、問題ないのです。

furusawa@tpe530c> find . -type f -print0 | xargs -0 ls

./Microsoft Windows like filename.txt


こんな方法があったのかと驚きです。FIND(1)にはオプション「-print0」の記載がある事には気付いていたのですが、何に使うのか不明なままでした。


0 件のコメント:

コメントを投稿