261

(Windows マシンで作成された) ZIP ファイルのディレクトリがあります。を使用して手動で解凍できunzip filenameますが、現在のフォルダー内のすべての ZIP ファイルをシェル経由で解凍するにはどうすればよいですか?

Ubuntu Linux サーバーの使用。

4

16 に答える 16

496

このリンクによると、これはbashで機能します:

解凍 \*.zip

于 2010-03-03T20:45:45.650 に答える
143

ワイルドカードをエスケープするには、いくつかの引用符を入力してください:

unzip "*.zip"
于 2010-03-04T00:43:24.817 に答える
98

次の bash スクリプトは、現在のディレクトリ内のすべての zip ファイルを、zip ファイルのファイル名を持つ新しいディレクトリに抽出します。

次のファイル:

myfile1.zip
myfile2.zip 

次の場所に抽出されます。

./myfile1/files...
./myfile2/files...

シェルスクリプト:

#!/bin/sh
for zip in *.zip
do
  dirname=`echo $zip | sed 's/\.zip$//'`
  if mkdir "$dirname"
  then
    if cd "$dirname"
    then
      unzip ../"$zip"
      cd ..
      # rm -f $zip # Uncomment to delete the original zip file
    else
      echo "Could not unpack $zip - cd failed"
    fi
  else
    echo "Could not unpack $zip - mkdir failed"
  fi
done
于 2015-03-25T06:21:39.070 に答える
46

*.zipを解凍するか、サブフォルダーにある場合は、次のようなものです

find . -name "*.zip" -exec unzip {} \;
于 2010-03-03T20:46:17.983 に答える
21
for i in *.zip; do
  newdir="${i:0:-4}" && mkdir "$newdir"
  unzip "$i" -d  "$newdir"
done

これにより、すべての zip アーカイブが、zip アーカイブのファイル名で名前が付けられた新しいフォルダーに解凍されます。

a.zip b.zip c.zipa b cそれぞれフォルダに解凍されます。

于 2015-04-28T12:53:15.903 に答える
7

aunpack -e *.zipatoolインストール済み。エラーをインテリジェントに処理し、zip にファイルが 1 つしか含まれていない限り、常にサブディレクトリに解凍するという利点があります。unzipしたがって、ディレクトリ構造のない zipの場合のように、大量のファイルで現在のディレクトリを汚染する危険はありません。

于 2013-05-24T07:59:39.807 に答える
3

これを使って:

for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
于 2015-02-13T21:59:40.000 に答える
2

for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done

于 2017-09-02T11:10:06.487 に答える
-2
for i in `ls *.zip`; do unzip $i; done
于 2010-03-03T20:45:02.407 に答える