如何将多个文件夹重命名为文本文件中的新名称

How to rename multiple folders to new names in a text file

我有一个主文件夹。并且这个主文件夹中有120个子文件夹。

他们的名字如下:

12sg
45gh
46ght
49hk5
.
.
.
zadg54

我为 mol.txt 文件中的每个子文件夹取了一个新名称。 mol.txt

中有 120 个名字

mol.txt 文件:

methyl
ethyl-2
nitro1
pernyty
.
.
.
dpcopt3

我想使用 perl 将 mol.txt 文件中的所有子文件夹重命名为新名称,但我不知道该怎么做(目录列表是按字母顺序排列的。我想按照这个顺序重命名它们)。你能帮帮我吗?

例如:

"methyl" name is for 12sg folder
"ethyl-2" name is for 45gh folder

你的第一关是 'map' 你的 'old' 名字到你的 'new' 名字。

例如,您怎么知道 12sh 应该重命名为 methyl?那不在你的 mol.txt 中。

无论如何,第一步是用关系构造一个散列。如果您确定目录中的顺序与 mol.txt 匹配。 (注意这一点,有几种可能的目录顺序,所以这个假设并不安全)你可能:

open ( my $input, "<", "mol.txt" );   
opendir ( my $dir_handle, "/your_directory" ); 

#sort because otherwise it's 'filesystem ordered' which may not be alphabetical. 
my @list_of_stuff = sort ( readdir ( $dir_handle ) ); 

foreach my $dirname ( @list_of_stuff )  {
    my $rename_to = <$input>;
    chomp ( $rename_to );

    print "Rename $dirname to $rename_to\n"; 
}

如果看起来它产生了正确的输出,那么您将添加 perl rename。但请注意 - 此处的目录列表不会进行排序,因此排序可能不是您所期望的。 (因此,为什么上面的代码片段不包含 rename)。