Eu tenho um diretório de arquivos ZIP (criados em uma máquina Windows). Posso descompactá-los manualmente usando unzip filename
, mas como posso descompactar todos os arquivos ZIP na pasta atual através do shell?
Usando o Ubuntu Linux Server.
Eu tenho um diretório de arquivos ZIP (criados em uma máquina Windows). Posso descompactá-los manualmente usando unzip filename
, mas como posso descompactar todos os arquivos ZIP na pasta atual através do shell?
Usando o Ubuntu Linux Server.
Respostas:
Isso funciona no bash, de acordo com este link :
descompacte \ *. zip
Basta colocar algumas aspas para escapar do curinga:
unzip "*.zip"
O script bash a seguir extrai todos os arquivos zip no diretório atual em novos diretórios com o nome do arquivo zip, ou seja:
Os seguintes arquivos:
myfile1.zip
myfile2.zip
Será extraído para:
./myfile1/files...
./myfile2/files...
Script de 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
"
ao nome do arquivo.
descompacte * .zip ou, se estiverem em subpastas, algo como
find . -name "*.zip" -exec unzip {} \;
gzip'ed
arquivos, use gunzip -rfk .
para descompactação recursiva dentro respectivas pastas
Descompacte todos os .zip
arquivos e armazene o conteúdo em uma nova pasta com o mesmo nome e na mesma pasta que o .zip
arquivo:
find -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Esta é uma extensão da resposta de @ phatmanace e aborda o comentário de @ RishabhAgrahari :
Isso extrairá todos os arquivos zip no diretório atual. E se eu quiser que os arquivos zip (presentes nas subpastas) sejam extraídos nas respectivas subpastas?
gzip'ed
arquivos, use gunzip -rfk .
para descompactação recursiva dentro respectivas pastas
find: illegal option -- n
usando UnZip 6,00 - qualquer outra pessoa?
find . -name '*.zip' -exec sh -c 'unzip -d "${1%.*}" "$1"' _ {} \;
Você esqueceu a listagem do diretório.
aunpack -e *.zip
, com atool
instalado. Tem a vantagem de lidar de maneira inteligente com erros e sempre descompactar subdiretórios, a menos que o zip contenha apenas um arquivo. Portanto, não há perigo de poluir o diretório atual com massas de arquivos, como ocorre unzip
em um zip sem estrutura de diretório.
Em qualquer shell POSIX, isso será descompactado em um diretório diferente para cada arquivo 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 isto:
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 ...
certo?
Esta é uma variante da resposta de Pedro Lobito usando Como percorrer um diretório recursivamente para excluir arquivos com certos ensinamentos de extensões :
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
Para descompactar todos os arquivos em um diretório, digite este cmd no terminal:
unzip '*.zip'
Usar
sudo apt-get install unzip
unzip file.zip -d path_to_destination_folder
descompactar uma pasta no linux