Qualquer método para compactar em lote vários arquivos?

4

Alguém sabe como vários arquivos podem ser compactados com GZIP?
Tenho muitos arquivos em uma pasta e preciso compactá-los individualmente.

Na verdade, encontrei uma maneira de fazer isso. O binário da linha de comando GZIP faz o trabalho.

Eu usei gzip -r dir .

Obrigado pelos seus esforços.

    
por avetarman 10.02.2012 / 21:13

6 respostas

2

Use apenas o gzip sozinho.

por padrão, o gzip irá pegar qualquer arquivo passado para ele, compactá-lo e adicionar a extensão .gz. ou seja,

gzip dir/* -r

gziparia todos os arquivos em dir / * (e subdiretórios).

    
por 10.02.2012 / 22:31
4

Tente o seguinte no powershell (depois de ir para o diretório correto):

$files = get-childitem e foreach ($file in $files) {gzip $file}

Isso passará por todos os arquivos no diretório e compactará todos eles.

Editar: Se você quiser fazer todos os arquivos em uma árvore de diretórios (ou seja, em uma pasta e todas as suas subpastas), basta alterar $files = get-childitem to $files = get-childitem -recurse

    
por 10.02.2012 / 21:32
3

Eu usaria um loop for . Você está preocupado que o executável será carregado muitas vezes? Isso não deve ser muito, comparado ao tempo gasto para compactar.

    
por 10.02.2012 / 21:33
2

O GZIP pode ser usado para compactar arquivos individuais com certeza ... mas na maioria das vezes você verá uma quantidade mínima de economia de espaço em disco. Os arquivos que ocupam 1 setor consumirão 1 setor completo de espaço em disco, mesmo que o arquivo seja menor que o tamanho do setor. (ie sector-size = 16kb, o arquivo é 8kb ... 'compactado' é 5kb ... ainda ocupa 16kb de "espaço em disco") O poder do gzip é muito mais evidente quando você combina todos os arquivos em um arquivo único (usando tar tipicamente) e, em seguida, comprimir o arquivo singular. (combinado, o "arquivo" pode pegar todos os arquivos e combiná-los em um único arquivo no disco ... que terá menos "espaço morto" entre os setores)

Por exemplo:

tar -czf compressed_archive.tgz folder/*

tar -c cria um archive, z usa compactação gzip e f grava os resultados em um arquivo chamado compressed_archive.tgz. Você também pode alternar para usar a compactação bz2 (que é melhor em muitos casos) simplesmente trocando a opção z para j .

Se você quiser extrair arquivos do repositório, basta fazer o contrário

tar -zxf compressed_archive.tgz

qual x extrairá os arquivos que foram z gzip'd, f do arquivo morto chamado compressed_archive.tgz.

    
por 10.02.2012 / 21:46
1

Use 7-Zip para obter uma melhor compactação

    
por 10.02.2012 / 21:26
1

Descobri que tinha que adaptar o método soandos powershell para que isso funcionasse como esperado (eu teria acrescentado comentários, mas não tenho permissão ainda).

$files = get-childitem -recurse | % { $_.FullName }
foreach ($file in $files) {gzip $file}
    
por 26.08.2015 / 17:42