У мене є каталог ZIP-файлів (створений на машині Windows). Я можу розпакувати їх вручну за допомогою unzip filename
, але як можна розпакувати всі ZIP-файли в поточній папці через оболонку?
Використання сервера Ubuntu Linux.
У мене є каталог ZIP-файлів (створений на машині Windows). Я можу розпакувати їх вручну за допомогою unzip filename
, але як можна розпакувати всі ZIP-файли в поточній папці через оболонку?
Використання сервера Ubuntu Linux.
Відповіді:
Це працює в bash, за цим посиланням :
розпакуйте \ *. zip
Просто введіть кілька цитат, щоб уникнути підстановки:
unzip "*.zip"
Наступний скрипт bash витягує всі поштові файли в поточному каталозі до нових dirs з назвою 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
"
до імені файлу
unzip * .zip, або якщо вони є в папках, то щось подібне
find . -name "*.zip" -exec unzip {} \;
gzip'ed
файлів, використовуйте gunzip -rfk .
для рекурсивного розпакування у відповідних папках
Розпакуйте всі .zip
файли та збережіть вміст у новій папці з тим самим назвою та в тій самій папці, що і .zip
файл:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Це розширення відповіді @ phatmanace та адреси @ коментаря RishabhAgrahari :
Це дозволить витягнути всі поштові файли в поточному каталозі, що робити, якщо я хочу, щоб файли zip (присутні у вкладених папках) були вилучені у відповідні папки?
gzip'ed
файлів, використовуйте gunzip -rfk .
для рекурсивного розпакування у відповідних папках
find: illegal option -- n
допомогою UnZip 6,00 - хто - небудь ще?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Ви забули перелік каталогів.
aunpack -e *.zip
, із atool
встановленим. Має перевагу в тому, що він розумно поводиться з помилками та завжди розпаковується в підкаталоги, якщо в zip не міститься лише один файл. Таким чином, немає небезпеки забруднити поточний каталог масою файлів, як це є unzip
на zip без структури каталогів.
У будь-якій оболонці POSIX це відкриватиме інший каталог для кожного поштового файлу:
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
Використовуй це:
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 file in *.zip; do ...
правильно?
Це варіант Педро лобіт відповідь , використовуючи Як перебрати каталог рекурсивно видалити файли з певними розширеннями навчань:
shopt -s globstar
root_directory="."
for zip_file_name in **/*.{zip,sublime\-package}; do
directory_name=`echo $zip_file_name | sed 's/\.\(zip\|sublime\-package\)$//'`
printf "Unpacking zip file \`$root_directory/$zip_file_name\`...\n"
if [ -f "$root_directory/$zip_file_name" ]; then
mkdir -p "$root_directory/$directory_name"
unzip -o -q "$root_directory/$zip_file_name" -d "$directory_name"
# Some files have the executable flag and were not being deleted because of it.
# chmod -x "$root_directory/$zip_file_name"
# rm -f "$root_directory/$zip_file_name"
fi
done
Щоб розпакувати всі файли в каталозі, просто введіть цей cmd у терміналі:
unzip '*.zip'
Використовуйте
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
щоб розпакувати папку в Linux