Tente isto:
for file in *.gz; do
gunzip -c "$file" > "${file/.DAT*/.DAT}"
done
A abordagem usa a opção gunzip
para enviar o fluxo descompactado para a saída padrão ( -c
), para que possamos redirecioná-lo para outro arquivo, sem uma segunda chamada de renomeação. A renomeação é feita na própria variável filename, usando a substituição bash
(corresponda a qualquer padrão globbing .DAT*
e substitua por .DAT
). O próprio loop apenas repete os arquivos no diretório atual com nomes que terminam com .gz
.