2014-02-03

find と xargs

ある条件に合致するファイルに対して, ある操作を加えるという場合, findxargs を使用することが多い. しかし, とくにオプションを使用しないと, ファイル名にスペースが含まれている場合に問題が生じる. findは改行を区切り文字とし, xargsはスペース (改行を含む) を区切り文字としているためである.
以下のように, 区切り文字を NUL (\0) とするオプションを使用することで, このような問題を回避できる.
find ... -print0 | xargs -0 ...
いつもこのオプションを付けておくようにしたい.

よく使用する例

  • ジェネラルなファイル (ディレクトリでない) に対して, 実行権を除く.
     find -type f -print0 | xargs -0 chmod -x 
    Windowsユーザの典型的な特徴として, ZIPで圧縮する, 空白をファイル名に使用するという点がある. ZIPで圧縮されたファイルを展開するとすべてに実行権がついてしまう (ことがある) ので, 上記のコマンドを打つ.
  • 0 件のコメント:

    コメントを投稿