cd
em all_folders
e, em seguida, execute
for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done
Eu tenho uma pasta all_folders
que contém 5 pastas:
./all_folders
./all_folders/folder1
./all_folders/folder2
./all_folders/folder3
./all_folders/folder4
./all_folders/folder5
Posso compactar todas essas pastas usando um único comando de uma só vez? Eu quero estar no diretório all_folders
e, em seguida, executar o comando para que as pastas individuais nesse diretório sejam compactadas.
A saída esperada é
quando faço
ls
em all_folders
, então eu deveria ter 10 diretórios. 5 descomprimidos e 5 comprimidos.
cd
em all_folders
e, em seguida, execute
for i in folder1 folder2 folder3 folder4 folder5; do tar czf $i.tar.gz $i; done
Não está claro o que você está tentando realizar. Estou fugindo do caso de uso, onde apenas os subdiretórios serão compactados aqui.
Primeiro, vá para o diretório que contém a coleção de diretórios e, em seguida:
find -maxdepth 1 -type d | {
while read dir; do
if [ ! "x${dir#*/}" = "x." ]; then
tar cJf ${dir#*/}.tar.xz ${dir#*/};
fi;
done
}
Isso funciona bem com zsh
. Para testar as coisas, coloque um echo
infront de tar
, para ver se o comando faz check-out, etc.
No entanto, fazer uma coleção de arquivos como esse geralmente não é desejável. Normalmente, você quer compactar toda a coleção, usar a compactação transparente da unidade em que esses arquivos residem ou usar a compactação de transporte ( X-DEFLATE
com HTTP, por exemplo).
Por favor, esteja ciente que você não vai acabar com um "diretório comprimido", mas com um "arquivo compactado", essas coisas não são intercambiáveis, como arquivos são arquivos próprios, enquanto os diretórios são meros inode datagramas.
tar -zcvf archive.tar.gz directory/
Isto irá dizer tar para c (criar) um arquivo a partir dos arquivos no diretório (tar é recursivo por padrão), compactá-lo usando o algoritmo z (gzip), armazenar a saída como af (arquivo) chamado archive.tar. gz e v (verbosamente) listam todos os arquivos adicionados ao arquivo.
Para descompactar e descompactar o arquivo no diretório atual, você usaria
tar -zxvf archive.tar.gz
Tags linux shell ubuntu shell-script