Mam katalog plików ZIP (utworzonych na komputerze z systemem Windows). Mogę ręcznie rozpakować je za pomocą unzip filename
, ale jak mogę rozpakować wszystkie pliki ZIP w bieżącym folderze za pomocą powłoki?
Korzystanie z Ubuntu Linux Server.
Mam katalog plików ZIP (utworzonych na komputerze z systemem Windows). Mogę ręcznie rozpakować je za pomocą unzip filename
, ale jak mogę rozpakować wszystkie pliki ZIP w bieżącym folderze za pomocą powłoki?
Korzystanie z Ubuntu Linux Server.
Odpowiedzi:
To działa w trybie bash, zgodnie z tym linkiem :
rozpakuj \ *. zip
Wystarczy wpisać kilka cytatów, aby uniknąć znaku zastępczego:
unzip "*.zip"
Poniższy skrypt bash wyodrębnia wszystkie pliki zip w bieżącym katalogu do nowych katalogów z nazwą pliku zip, tj .:
Następujące pliki:
myfile1.zip
myfile2.zip
Zostanie wyodrębniony do:
./myfile1/files...
./myfile2/files...
Skrypt powłoki:
#!/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
"
do nazwy pliku
rozpakuj * .zip, lub jeśli są w podfolderach, to coś podobnego
find . -name "*.zip" -exec unzip {} \;
gzip'ed
plików użyj gunzip -rfk .
do rekurencyjnego rozpakowywania w odpowiednich folderach
Rozpakuj wszystkie .zip
pliki i zapisz zawartość w nowym folderze o tej samej nazwie i w tym samym folderze co .zip
plik:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
To jest rozszerzenie odpowiedzi @ phatmanace i adresuje komentarz @ RishabhAgrahari :
Spowoduje to wyodrębnienie wszystkich plików zip z bieżącego katalogu. Co zrobić, jeśli chcę, aby pliki zip (obecne w podfolderach) zostały wyodrębnione w odpowiednich podfolderach?
gzip'ed
plików użyj gunzip -rfk .
do rekurencyjnego rozpakowywania w odpowiednich folderach
find: illegal option -- n
z UnZip 6.00 - ktoś jeszcze?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Zapomniałeś katalogu.
aunpack -e *.zip
, z atool
zainstalowanym. Ma tę zaletę, że inteligentnie radzi sobie z błędami i zawsze rozpakowuje się do podkatalogów, chyba że zip zawiera tylko jeden plik. Zatem nie ma niebezpieczeństwa zanieczyszczenia bieżącego katalogu masą plików, tak jak ma to miejsce w przypadkuunzip
pliku zip bez struktury katalogów.
W dowolnej powłoce POSIX spowoduje to rozpakowanie do innego katalogu dla każdego pliku zip:
for file in *.zip
do
directory="${file%.zip}"
unzip "$file" -d "$directory"
done
for file in *.zip; do unzip "$file" -d "${file%.zip}"; done
Użyj tego:
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 ...
dobrze?
Jest to wariant Pedro Lobito odpowiedź używając Jak pętli katalogu rekursywnie usunąć pliki o określonych rozszerzeniach nauk:
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
Aby rozpakować wszystkie pliki w katalogu, po prostu wpisz to polecenie cmd w terminalu:
unzip '*.zip'
Posługiwać się
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
rozpakować folder w systemie Linux