タイトル長過ぎですね。下記のコマンドにたどり着くのに苦労しました。環境はMac OSX 10.9です。
find ./path/to/src -name '*.zip' | xargs -IX -n 1 unzip -j X -d ./path/to/dst \*.xml
ポイント
- findの結果をxagrsに渡すところは、調べればたくさん出てくるので、それほど苦労は無いと思います。
- findの結果をxargsで指定するコマンド(この例だとunzip)に1つずつ渡すのに
-n 1
を指定します。 - 結果を渡す位置を指定するのに、
-I
オプションを使います。Iに続いて任意の文字列(1文字でもいい)を書き、unzipの結果を渡す位置にもその文字列を書きます。(上の例だとXです) - unzipの解凍先を指定するのは
-d
オプションです。 -
-j
は、サブフォルダを作らないオプションです。 - zipファイル中の特定のファイルを指定する場合、ワイルドカードが使えますが、
*
はエスケープする必要があるらしく、\*
としなければなりません。\
を付けないと、no matches found: *.xmlの様なエラーになります。