やってみると
unzip filename.Zip
できます。ただし、一連のZipファイルを解凍する必要があります。
なぜですか:
find . -name "*.Zip" -print0 | xargs -0 unzip
または
ls *.Zip | xargs unzip
機能していませんか?
どちらの場合も、「注意:ファイル名が一致しません:」というメッセージが表示されます。
コマンドはすべてのファイルを同じコマンドラインに詰め込むため、機能しません。これはほとんどのプログラムで機能しますが、unzip
は最初の引数をZipファイルとして受け取り、最初の引数以降はZipファイルとして抽出します。ファイルごとにコマンドを1回実行する必要があります。
find . -name "*.Zip" -print0 | xargs -0 -n1 unzip
または
find . -name '*.Zip' -exec unzip {} \;
Bashでは、次の操作も実行できます。
for i in *.Zip; do
unzip "$i"
done
また、unzip
は-d
スイッチを使用すると、出力を別の場所にターゲットできます。
例えば:
uzdir=/path/to/unzips
for i in *.Zip; do
[ -d "$uzdir/$i" ] || mkdir -p "$uzdir/$i"
unzip "$i" -d "$uzdir/$i"
done
上記のループよりもはるかに簡単な解決策があります。ディレクトリ-d
フラグを使用します。
unzip -o somefiles.Zip -d $directoryPath