使用重命名重命名多个文件

goo*_*cow 5 shell shell-script rename

我需要批量重命名文件——我浏览的其他问题并不能完全解决我的问题。我的文件的名称是不确定生成的,因此我无法预测它们将被命名为什么。我知道他们将以 . 开头NORMAL和结尾-lib*。我想用一些 string 替换它们之间的所有内容X。例如,

|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.concordant
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.deletion
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.divergent
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.inversion
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib1.translocation
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.concordant
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.deletion
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.divergent
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.insertion
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.inversion
|   |   |-- NORMAL_H_LS-A7-A0CE-10A-01D-A017-09-lib4.translocation
Run Code Online (Sandbox Code Playgroud)

所以它可能是这种形式rename "s/something/X/",但我不知道那应该是什么,因为我不知道如何使用正则表达式。

Nic*_*lin 1

如果您足够幸运,可以使用rename,那么以下内容就足够了:

rename 's/(NORMAL).*(-lib)/$1X$2/' *
Run Code Online (Sandbox Code Playgroud)