ファイルバッチの解凍

ファイルバッチの解凍

私が試したとき

 unzip filename.zip

効果があるただし、一連のzipファイルを解凍する必要があります。

なぜ:

 find . -name "*.zip" -print0 | xargs -0 unzip

または

 ls *.zip | xargs unzip

動作しない?

どちらの場合も、「警告:ファイル名の不一致:」というメッセージが表示されます。

答え1

次のコマンドを実行できます。

$ unzip '*.zip'

ここで見つけてください引用する

答え2

あなたのコマンドは、すべてのファイルを同じコマンドラインに入力するため、機能しません。これはほとんどのプログラムで機能しますが、unzip最初の引数はzipファイルとして使用され、最初の引数以降のすべての引数は抽出するファイルとして使用されます。各ファイルに対してコマンドを一度実行する必要があります。

find . -name "*.zip" -print0 | xargs -0 -n1 unzip

または

find . -name '*.zip' -exec unzip {} \;

答え3

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

答え4

ディレクトリフラグを使用して上記のループよりも簡単な解決策があります-d

unzip -o somefiles.zip -d $directoryPath

関連情報