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 .