删除文件名的字符串并将其他字符串保留在 BASH 中

删除文件名的字符串并将其他字符串保留在 BASH 中

我有很多这样的文件:

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

最后我想要的是这样的:

2007.365.00.00.CVSV4.HHZ.SAC

我试过这个:

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

安达我明白了:

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

有人可以帮助我吗?我看到了很多例子,但我可能做错了什么。

答案1

如果您对输出感到满意,请删除回声(在 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

相关内容