xargs を使って tar で複数ファイルを解凍する

移転しました。

複数ファイルをfindで取得してtarで解凍しようとおもったらうまくいかない

find . -name "*.gz" | xargs tar xf

どうやらtarは複数ファイルを受け付けないため、上記ではうまくいかない。
以下のようにすると複数ファイルが解凍できるようになった。

find . -name "*.tar.gz" -print0 | xargs -0 -n1 tar xf

ちなみにオプションの意味

find

-print0

   真を返す。ファイル名をフルパスで標準出力に表示し、各ファイル名に
   ヌル文字を付加する。このオプションを用いれば、 find の出力を処理
   するプログラムにおいて改行文字を含んだファイル名を正しく解釈でき
   るようになる。

xargs

--null, -0

   標準入力からの文字列の区切りに、空白ではなくヌル文字が使われてい
   るとみなす。また引用符やバックスラッシュに特別の意味を持たせず、
   すべての文字をそのまま用いる。ファイル終了文字列も無効となり、他
   の文字列と同じように扱われる。入力される文字列に空白・引用符・バ
   ックスラッシュが含まれている場合に有用であろう。  GNU  find   の
   -print0  オプションの出力を、このオプションを指定した xargs の入
   力とすると良い。

--max-args=max-args, -n max-args

   コマンドラインあたり最大 max-args 個の文字列が用いられる。もし
   サイズが超過した場合には (-s オプションの項を見よ)、 max-args 
   以下の文字列が用いられることになる。ただしこれは -x オプション
   が指定されていない場合で、指定されている場合には xargs 自身が実行を終了する。 

参考URL