Разархивируйте все файлы в каталоге - PullRequest
161 голосов
/ 03 марта 2010

У меня есть каталог файлов ZIP (созданный на компьютере с Windows). Я могу разархивировать их вручную, используя unzip filename, но как мне разархивировать все файлы ZIP в текущей папке через оболочку?

Использование Ubuntu Linux Server.

Ответы [ 15 ]

323 голосов
/ 03 марта 2010

Это работает в bash, согласно этой ссылке :

unzip \ *. Zip

80 голосов
/ 04 марта 2010

Просто вставьте несколько кавычек, чтобы избежать подстановочного знака:

unzip "*.zip"
52 голосов
/ 25 марта 2015

Извлекает все ZIP-файлы в текущем каталоге в новые каталоги с именем файла ZIP-файла.

ex, следующие файлы:

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
32 голосов
/ 03 марта 2010

распаковать * .zip, или если они находятся в подпапках, то что-то вроде

find . -name "*.zip" -exec unzip {} \;
12 голосов
/ 28 апреля 2015
for i in *.zip; do
  newdir="${i:0:-4}" && mkdir "$newdir"
  unzip "$i" -d  "$newdir"
done

Это разархивирует все zip-архивы в новые папки с именами файлов zip-архивов.

a.zip b.zip c.zip будет распакован в папки a b c соответственно.

7 голосов
/ 15 апреля 2018

Распакуйте все файлы .zip и сохраните содержимое в новой папке с тем же именем и в той же папке, что и файл .zip:

find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;

Это расширение @ ответа phatmanace и адресов @ Комментарий RishabhAgrahari :

При этом будут извлечены все zip-файлы в текущем каталоге, что если я хочу, чтобы zip-файлы (присутствующие в подпапках) извлекались в соответствующие подпапки?

6 голосов
/ 24 мая 2013

aunpack -e *.zip, с установленным atool. Преимущество в том, что он работает с ошибками и всегда распаковывает в подкаталоги, если в zip-файле содержится только один файл. Таким образом, нет опасности загрязнения текущей директории массами файлов, как в случае с unzip на zip без структуры каталогов.

4 голосов
/ 16 апреля 2018

В любой оболочке POSIX это разархивирует в отдельный каталог для каждого файла zip:

for file in *.zip
do
    directory="${file%.zip}"
    unzip "$file" -d "$directory"
done
2 голосов
/ 02 сентября 2017

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

2 голосов
/ 14 февраля 2015

Используйте это:

for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
...