我有一个包含 96 个要重命名的文件的文件夹。问题是每个文件名都需要一个唯一的更改......不像在每个名称的前面添加一个零或更改扩展名。进行搜索和替换是不切实际的。这是我要更改的名称示例:
newSEACODI-sww2320H-sww24_07A_CP.9_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07B_CP.10_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07C_CP.11_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07D_CP.12_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07E_R.1_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07F_R.3_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07G_R.4_sww2320H_sww2403F.fsa
newSEACODI-sww2320H-sww24_07H_R.5_sww2320H_sww2403F.fsa
我想使用 perl 将上述名称分别更改为以下名称:
SEACODI_07A_A.2_sww2320H_2403F.fsa
SEACODI_07B_A.4_sww2320H_2403F.fsa
SEACODI_07C_H.1_sww2320H_2403F.fsa
SEACODI_07D_H.3_sww2320H_2403F.fsa
SEACODI_07E_H.6_sww2320H_2403F.fsa
SEACODI_07F_H.7_sww2320H_2403F.fsa
SEACODI_07G_Rb.4_sww2320H_2403F.fsa
SEACODI_07H_Rb.9_sww2320H_2403F.fsa
这样的事情能做到吗?我有一个模糊的想法,我可能会制作一个包含新名称列表的文本文件,并将该列表称为@newnames。我会从当前文件名中创建另一个数组,并将其命名为@oldnames。然后我会做某种for
循环,其中@oldnames 中的每个元素$i 都被@newnames 中的相应$i 替换。
不过,我不知道如何从我当前的文件名中创建一个数组,所以我不确定这个模糊的想法是否在正确的轨道上。我将带有混乱名称的文件保存在一个名为“oldnames”的目录中。下面是我尝试从该目录中的文件名中创建一个数组:
#!/usr/bin/perl -w
use strict; use warnings;
my $dir = 'oldnames';
opendir ('oldnames', $dir) or die "cannot open dir $dir: $!";
my @file = readdir 'oldnames';
closedir 'oldnames';
print "@file\n";
以上似乎没有做任何事情。我迷路了。帮助?