如何将多个文件夹重命名为文本文件中的新名称
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
)。
我有一个主文件夹。并且这个主文件夹中有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
)。