Webを検索していたら「find mostly doesn't need xargs today on modern Unixes」という記事を見つけました。この記事の趣旨は「今どきのUNIXならfindにxargsは必要ない」という事かと思いますが、むしろ初めて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
このような状況が想定される場合、単純にfindとxargsが使えないので、いろいろな回避策を駆使して対応していました。ところが上述したオプションを使えば、問題ないのです。
furusawa@tpe530c> find . -type f -print0 | xargs -0 ls
./Microsoft Windows like filename.txt
こんな方法があったのかと驚きです。FIND(1)にはオプション「-print0」の記載がある事には気付いていたのですが、何に使うのか不明なままでした。
0 件のコメント:
コメントを投稿