Diretório Gunzip de arquivos e saída de pipe Linux

1

Eu gostaria de gunzip um diretório cheio de arquivos compactados e canalizar a saída (preservando os arquivos originais) para um diretório diferente. Preciso que os nomes originais permaneçam iguais. Assim...

gunzip -c *.gz > file/path/filename 

# Search for all .gz in current directory and redirect output here. How do I grab the name of the file found using the wildcard?

obrigado pela ajuda

Atualização: script final abaixo

FILES= /foo/bar/*.gz
for gz in $FILES; do
echo "unzipping $gz..." 1>&2
fn=$(basename $gz .gz)
gunzip -c $gz > /new/foobar/$fn
done
KennyC
fonte
O que isso tem a ver com o Python? Além disso, o que você quer dizer com "preservar os arquivos originais"?
Blender
Desculpas; apenas escrevendo python, estava no cérebro. O que quero dizer com a preservação de arquivos originais é que o gunzip normalmente exclui o arquivo compactado e gera um arquivo que não é compactado (portanto, o sinalizador -c)

Respostas:

1

Você pode querer usar um script de shell:

for f in *.gz
do
    zcat "$f" > "other/folder/$(basename "$f" ".gz")"
done
Blender
fonte
0

Com o GNU Parallel você pode fazer:

parallel gunzip -c {} '>' /new/foobar/{/.} ::: /foo/bar/*.gz

O GNU Parallel leva literalmente 10 segundos para instalar:

wget pi.dk/3 -qO - | sh -x

Assista aos vídeos de introdução para saber mais: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

Ole Tange
fonte
Instalado o GNU Parallel, mas estou recebendo este erro; parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit. É um problema de sintaxe? Você pode fornecer informações sobre o script editado na pergunta?
KennyC
Postar saída de 'parallel --version'. Se você não instalou como mencionado acima, você pode ser atingido por stackoverflow.com/questions/16448887/…
Ole Tange
Instalado como acima; nenhuma menção de tollef GNU parallel 20130622
KennyC
Se funciona com '--gnu' então você tem um '- tollef' em algum lugar.
Ole Tange