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 mv
declaración.