Gunzip varios archivos y cambiarles el nombre

Gunzip varios archivos y cambiarles el nombre

Quiero saber si es posible tener gunzipvarios archivos y cambiarles el nombre con un comando/script.

Tengo un montón de archivos en el formato:

test.20120708191601.DAT.3599502593.gz
test.20120708201601.DAT.99932140.gz
test.20120708204600.DAT.1184686967.gz
test.20120708212100.DAT.824089664.gz
test.20120708215100.DAT.1286044098.gz
test.20120708222100.DAT.1414234861.gz

Necesito eliminarlos gunzipy eliminar todo lo que esté después de .DAT, para que esté en el formato:

test.20120708191601.DAT
test.20120708201601.DAT
test.20120708204600.DAT
test.20120708212100.DAT
test.20120708215100.DAT
test.20120708222100.DAT

Respuesta1

Prueba esto:

for file in *.gz; do
  gunzip -c "$file" > "${file/.DAT*/.DAT}"
done

El enfoque utiliza gunzipla opción para enviar el flujo sin comprimir a la salida estándar ( -c), de modo que podamos redirigirlo a otro archivo, sin una segunda llamada para cambiar el nombre. El cambio de nombre se realiza en la propia variable de nombre de archivo, mediante bashsustitución (haga coincidir cualquier patrón global .DAT*y reemplácelo con .DAT). El bucle en sí simplemente itera sobre archivos en el directorio actual con nombres que terminan en .gz.

información relacionada