Ho una directory di file ZIP (creati su un computer Windows). Posso decomprimerli manualmente usando unzip filename
, ma come posso decomprimere tutti i file ZIP nella cartella corrente tramite la shell?
Utilizzando Ubuntu Linux Server.
Ho una directory di file ZIP (creati su un computer Windows). Posso decomprimerli manualmente usando unzip filename
, ma come posso decomprimere tutti i file ZIP nella cartella corrente tramite la shell?
Utilizzando Ubuntu Linux Server.
Risposte:
Funziona in bash, secondo questo link :
decomprimere \ *. zip
Basta inserire alcune virgolette per sfuggire al jolly:
unzip "*.zip"
Il seguente script bash estrae tutti i file zip nella directory corrente in nuove directory con il nome file del file zip, ovvero:
I seguenti file:
myfile1.zip
myfile2.zip
Verrà estratto a:
./myfile1/files...
./myfile2/files...
Script di shell:
#!/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
"
al nome del file
decomprimere * .zip, o se si trovano in sottocartelle, quindi qualcosa del genere
find . -name "*.zip" -exec unzip {} \;
gzip'ed
file, utilizzare gunzip -rfk .
per
Decomprimi tutti i .zip
file e archivia il contenuto in una nuova cartella con lo stesso nome e nella stessa cartella del .zip
file:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Questa è un'estensione della risposta di @ phatmanace e indirizza il commento di @ RishabhAgrahari :
Questo estrarrà tutti i file zip nella directory corrente, cosa succede se voglio che i file zip (presenti nelle sottocartelle) vengano estratti nelle rispettive sottocartelle?
gzip'ed
file, utilizzare gunzip -rfk .
per
find: illegal option -- n
utilizzando UnZip 6.00 - qualcun altro?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Hai dimenticato l'elenco delle directory.
aunpack -e *.zip
, con atool
installato. Ha il vantaggio di gestire in modo intelligente gli errori e di decomprimersi sempre nelle sottodirectory a meno che zip non contenga solo un file. Pertanto, non vi è alcun pericolo di inquinare la directory corrente con masse di file, come unzip
nel caso di un file zip senza struttura di directory.
In qualsiasi shell POSIX, questo verrà decompresso in una directory diversa per ogni file 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
Usa questo:
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 ...
bene?
Questa è una variante della risposta di Pedro Lobito usando Come scorrere in modo ricorsivo una directory per eliminare i file con determinati insegnamenti sulle estensioni :
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
Per decomprimere tutti i file in una directory basta digitare questo cmd nel terminale:
unzip '*.zip'
Uso
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
per decomprimere una cartella in linux