如何更改文件夹中许多文件的名称

我有一个包含1000个文件的文件夹。

他们的名字如下

…… P1_A1 _R2 ….

…… P1_A2 _R2 ….

…… P1_A3 _R2 ….

只有中间是重要的突出显示

我在这个信息的同一文件夹中有一个密钥.txt文件

 Sample PR Col 1 1 A 1 2 1 A 2 3 1 A 3 

我想检查.txt文件并相应地更改文件名,或者在另一个文件夹中使用名称保存。 例如

.._ P1_A1_ ..

应该是sample1因为当我查看.txt文件时,它是

 Sample PR Col 1 1 A 1 

对于.._ P1_A2_ ..

应该是sample2因为当我查看.txt文件时,它是

 Sample PR Col 2 1 A 2 

如果我们可以安全地假设您的所有名称都是唯一的,我的意思是只有一个文件的名称包含_P1_A1 ,只有一个文件包含_P1_A2等,您可以这样做:

 $ awk 'NR>1{print "mv *_P"$2"_"$3$4"* sample"$1}' key.txt mv *_P1_A1* sample1 mv *_P1_A2* sample2 mv *_P1_A3* sample3 

Awk逐行读取其输入并将其拆分为空白字段。 所以第一个字段是$1 ,第二个字段是2 $2等。在这里,我们正在处理密钥文件并通过从文件的字段构建它来打印正确的mv命令。

如果您确定打印的mv命令是正确的,则可以使用以下命令运行它们:

 awk 'NR>1{system("mv *_P"$2"_"$3$4"* sample"$1)}' key.txt