Linux 删除文件名中两个字符串之间的字符串

Linux 删除文件名中两个字符串之间的字符串,linux,bash,Linux,Bash,我是Linux新手,必须删除文件名中的特定字符串 以下是我的文件名: AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV 我需要输出为: AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV 我想删除123,它可能是5345667或其他任何出现在该位置的数字

我是Linux新手,必须删除文件名中的特定字符串

以下是我的文件名:

AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV
我需要输出为:

AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV   
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV

我想删除
123
,它可能是
5345667
或其他任何出现在该位置的数字,所以我想删除它们之间的字符串。(第5次出现)和。(第6次出现)在文件名中。

cut
可以执行以下操作:

pax> echo 'AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV' | cut -d. -f1-5,7-
AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV

pax> echo 'AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV' | cut -d. -f1-5,7-
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV

-d.
只需将分隔符设置为
,而
-f1-5,7-
提供除第六个字段以外的所有字段。

Input.txt

AB.TEXT.OMN.BUFFER.INSERT.123.20130315.CSV 
AB.TEXT.OMN.BUFFER.APPEND.5345667.20130315.CSV
命令

awk -F "." '{ $6=""; print $0 }' Input.txt | sed -e 's/ /\./g' -e 's/\.\./\./g'
输出

AB.TEXT.OMN.BUFFER.INSERT.20130315.CSV   
AB.TEXT.OMN.BUFFER.APPEND.20130315.CSV

感谢您的快速响应,我实际上需要重命名目录中的所有文件。你能帮我如何用这个剪辑重命名这个文件吗command@Naga,如果您想重命名文件,您应该查看
prename
(有时
rename
)-它正是为了这个目的,使您能够完全使用Perl的正则表达式来重命名文件。请参阅示例,感谢您的建议,我已创建了以下脚本来重命名该文件。#/
ls-a*.CSV
do echo“$i”newFileName=$(echo“$i”| cut-d.-f1-5,7-)echo$newFileName mv$i$newFileName done