У меня есть каталог ZIP файлов (созданных на Windows-машине). Я могу вручную распаковать их с помощью unzip filename
, но как я могу разархивировать все ZIP файлы в текущей папке через оболочку?
Использование Ubuntu Linux Server.
У меня есть каталог ZIP файлов (созданных на Windows-машине). Я могу вручную распаковать их с помощью unzip filename
, но как я могу разархивировать все ZIP файлы в текущей папке через оболочку?
Использование Ubuntu Linux Server.
(untested), но эта ссылка предлагает:
unzip\*. zip
Просто введите некоторые кавычки, чтобы избежать подстановки:
unzip "*.zip"
Извлекает все zip файлы в текущем каталоге в новые директории с именем файла zip.
ex, следующие файлы:
myfile1.zip
myfile2.zip
будет извлечен:
./myfile1/files...
./myfile2/files...
Shell script:
#!/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
unzip *.zip, или если они находятся в подпапках, то что-то вроде
find . -name "*.zip" -exec unzip {} \;
aunpack -e *.zip
, с установленным atool
.
Имеет то преимущество, что он интеллектуально обрабатывает ошибки и всегда распаковывается в подкаталоги, если zip не содержит только один файл. Таким образом, нет никакой опасности заразить текущий каталог массами файлов, так как существует unzip
на zip без структуры каталогов.
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
соответственно.
Используйте это:
for file in `ls *.Zip`; do
unzip ${file} -d ${unzip_dir_loc}
done
for file in 'ls *.zip'; do unzip "${file}" -d "${file:0:-4}"; done
for i in `ls *.zip`; do unzip $i; done
Использование
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
чтобы распаковать папку в linux