Como você combina -r e -c para gunzip?

0

Estou tentando recursivamente gunzip arquivos ( -r ), mas não tenho permissão em seu local original para armazená-los. Eu sei mudar o local para um único arquivo que você faz gunzip {file} -c > {new file location} , mas eu não vejo como você combina os dois que você diz manter a estrutura de diretórios original dos locais de arquivos originais e ter essa mesma estrutura de diretórios no novo localização.

    
por demongolem 23.04.2015 / 04:44

1 resposta

1

No Unix com o GNU find (incluindo o Linux) você pode usar isso para a recursão AND iteration

 find . -name '*.gz' -exec sh -c 'gunzip -c "{}" >"/output/path/{}"' \;

Em outros Unix / find embedded {} pode não funcionar, então acho que você precisa de shell (supondo Bourneish)

 find . -name '*.gz' | while read f; do gunzip -c "$f" >"/output/path/$f"; done

Isto assume que nenhum subdiretório é chamado something.gz, o que seria perverso; se assim for, adicione -type f . Se todos os arquivos forem compactados, -type f sozinho será suficiente.

Mas pode ser mais fácil para copiar a árvore de arquivos compactados para o local gravável primeiro (muitas maneiras no Unix: cp -R , rsync -r , tar cf - | (cd somewhere; tar xf -) e até mesmo no Windows xcopy ) e descompacte as cópias.

    
por 23.04.2015 / 12:27