¿Cambiar nombres de archivos masivos?

¿Cambiar nombres de archivos masivos?

Tengo un problema sobre cómo cambiar el orden del nombre de ese archivo sac. Quiero decir, tengo este orden pero necesito cambiarlo al segundo y estos comandos deberían estar en el script. Además, este cambio debe realizarse utilizando números de columna.

VIEJO

2007.084.00.22.50.8930_2007.084.01.26.10.1430.GE.ISP..BHZ.D.SAC
2007.084.00.22.51.2930_2007.084.01.26.54.8430.GE.ISP..BHN.D.SAC
2007.084.00.25.42.9430_2007.084.01.27.59.2430.GE.ISP..BHE.D.SAC

NUEVO

2007.084.01.26.10.1430_2007.084.00.22.50.8930.GE.ISP..BHZ.D.SAC
2007.084.01.26.54.8430_2007.084.00.22.51.2930.GE.ISP..BHN.D.SAC
2007.084.01.27.59.2430_2007.084.00.25.42.9430.GE.ISP..BHE.D.SAC

Déjame escribir el código que intento terminar de esta manera (si las respuestas serán de esa manera, me será más útil) y no sé cómo continuar para terminar este proceso.

#!/bin/bash

for sacfile in *SAC
do

echo $sacfile
n2=`echo $sacfile | cut -c 24-45`
echo $n2

done 

Respuesta1

Suponiendo que sean nombres de archivos de longitud fija, esto debería funcionar.

#!/bin/bash

for sacfile in *SAC
do
    new_sacfile=${sacfile:23:22}_${sacfile:0:22}${sacfile:45}
    echo mv -v ${sacfile} ${new_sacfile}
done 

estamos usandomanipulación de variables incorporada de bashpara cortar el nombre del archivo y reorganizarlo a nuestro gusto. Cuando estés contento, puedes eliminar el eco delante de la mvdeclaración.

información relacionada