Alterando nomes de arquivos em massa?

3

Eu tenho um problema sobre como alterar pedidos do nome do arquivo sac. Quer dizer, eu tenho esse pedido, mas preciso mudá-lo para o segundo e os ecommands devem estar no script. Além disso, essa alteração deve ser feita com o uso de números de coluna.

OLD

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

NOVO

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

Deixe-me escrever o código que tento terminar desta forma (se as respostas forem assim, será mais útil para mim) e não sei como continuar a terminar este processo.

#!/bin/bash

for sacfile in *SAC
do

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

done 
    
por kejinatsu 31.10.2016 / 16:27

1 resposta

2

Supondo que eles sejam nomes de arquivos de tamanho fixo, isso deve 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 usando a manipulação de variáveis do bash para cortar o nome do arquivo e reorganizá-lo ao nosso desejo. Quando você está feliz, pode remover o eco na frente da declaração mv

    
por 31.10.2016 / 16:35