Tenho um problema sobre como alterar a ordem do nome dos arquivos sac. Quer dizer, tenho esse pedido, mas preciso alterá-lo para o segundo e esses comandos eletrônicos devem estar no script. Além disso, essa alteração deve ser feita usando números de colunas.
VELHO
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 dessa forma, 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
Responder1
Supondo que sejam nomes de arquivos de comprimento 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 usandobash é construído em manipulação de variáveispara cortar o nome do arquivo e reorganizá-lo conforme desejarmos. Quando estiver satisfeito, você pode remover o eco antes da mv
declaração