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

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

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

他们的名字如下

...P1_A1_R2....

...P1_A2_R2....

...P1_A3_R2....

只有中间部分是重要的,正如所强调的

.txt并且我在同一个文件夹中有一个包含此信息的密钥文件

Sample  P   R   Col
    1   1   A   1
    2   1   A   2
    3   1   A   3

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

..._P1_A1_..

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

Sample  P   R   Col
    1   1   A   1

对于.._P1_A2_..

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

Sample  P   R   Col
    2   1   A   2

答案1

如果我们可以放心地假设所有名称都是唯一的,我的意思是只有一个文件的名称包含_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,依此类推。在这里,我们正在处理密钥文件,并mv通过从文件的字段构建命令来打印正确的命令。

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

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

相关内容