bash: localizar e zipar todas as subpastas de uma pasta

2

como alguém poderia encontrar todas as subpastas de uma pasta e compactá-las separadamente?

estrutura de pastas

./folder  
   -subfolder_1  
   -subfolder_2   
   -subfolder_3 

resultado esperado:

./folder
   -subfolder_1.zip
   -subfolder_2.zip
   -subfolder_3.zip

Eu tentei o seguinte:

for i in .; do zip -r $i.zip $i; done; 

resultou em um arquivo .. zip contendo todas as subpastas

    
por m1k3y02 10.02.2015 / 11:27

2 respostas

3

Na verdade, a solução fornecida por m1k3y02 ( for i in *; do zip -r "$i.zip" $i; done ) funcionará apenas se o diretório atual contiver apenas subdiretórios.

Melhor maneira de encontrar e fechar apenas subdiretórios:

for dir in ./* ;do
    if [[ -d $dir ]];then
        zip -r ${dir}.zip $dir
    fi
done

ou

find . -type d -maxdepth 1 -exec zip -r {}.zip {} \;
    
por 26.06.2015 / 22:16
0

solução da seguinte forma ...

for i in *; do zip -r "$i.zip" $i; done; 
    
por 10.02.2015 / 15:25