删除文件名中的重复名称

删除文件名中的重复名称

我的 Linux 机器上有很多文件,文件名如下:

Veillonella-sp.-AF13-2-AF13-2.Scaf1.faa
Weissella-cibaria-strain-AM27-24-AM27-24.Scaf1.faa
Streptococcus-salivarius-strain-AF24-6AC-AF24-6AC.Scaf1.faa

文件名有一部分重复。我只想拥有唯一的名称。我想编辑这个文件名,使其只有这个:

Veillonella-sp.-AF13-2.faa
Weissella-cibaria-strain-AM27-24.faa
Streptococcus-salivarius-strain-AF24-6AC.faa

您能告诉我一种编辑这些文件名的方法吗?

我的Linux发行版是CentOS

谢谢!

答案1

使用 Perl 实现rename

rename -v 's/(-\w+?-\d+?)\1/$1/' *.faa

这将删除当前目录中-word-digits与 匹配的任何文件名中的任何重复项。*.faa

它通过匹配-\w+?-\d+?, ie -word-digits,然后再次匹配相同的字符串来实现这一点。这样的匹配将仅被字符串的第一个实例替换。

答案2

rename 's/-2-AF13-2.Scaf1.//' *.faa

相关内容