Remover strings de um nome de arquivo e deixar outras em BASH [closed]

0

Eu tenho muitos arquivos assim:

2007.365.00.00.00.0000.9A.CVSV4..HHZ.D.SAC.GAP.decim10.GAP

No final, quero que:

2007.365.00.00.CVSV4.HHZ.SAC

Eu tentei isso:

for file in /home/joana/Desktop/*GAP; do
mv "$file" 'echo "$file" | sed -e 's/00.0000.9A.//' -e 's/.D//' -e 's/.GAP.decim10.GAP//'';
done

Anda eu entendo isso:

mv: cannot move ‘/home/joana/Desktop/2007.365.00.00.00.0000.9A.CVSV4..HHZ.D.SAC.GAP.decim10.GAP’ to ‘/home/joanaesktop/2007.365.00.00.CVSV4..HHZ.D.SAC’: No such file or directory

Alguém pode me ajudar? Eu vi muitos exemplos, mas provavelmente estou fazendo algo errado.

    
por Joana Carvalho 12.10.2016 / 11:53

1 resposta

3

se você está feliz com a saída, então remova o eco (antes do mv)

 for file in *GAP 
    do 
        NEW_FILE=$(echo ${file} | awk -F. '{print $1,$2,$3,$4,$8,$10,$12}' OFS=.)
        echo mv ${file} ${NEW_FILE}
     done
    
por 12.10.2016 / 12:00