我正在尝试遍历目录以更改这些目录中的某些文件扩展名。
我已经到了可以通过命令行提供的目录,但是我不能让它遍历那些目录'子目录。
例如:如果我想更改目录测试中的文件扩展名,那么如果Test有一个子目录,我希望能够通过该目录并更改这些文件的文件扩展名
我想出了这个。这适用于一个目录。它正确地更改了一个特定目录中文件的文件扩展名。
#!/usr/local/bin/perl
use strict;
use warnings;
my @argv;
my $dir = $ARGV[0];
my @files = glob "${dir}/*pl";
foreach (@files) {
next if -d;
(my $txt = $_) =~ s/pl$/txt/;
rename($_, $txt);
}
然后我听说过File :: Find :: Rule,所以我尝试使用它来遍历目录。
我想出了这个:
#!/usr/local/bin/perl
use strict;
use warnings;
use File::Find;
use File::Find::Rule;
my @argv;
my $dir = $ARGV[0];
my @subdirs = File::find::Rule->directory->in( $dir );
sub fileRecurs{
my @files = glob "${dir}/*pl";
foreach (@files) {
next if -d;
(my $txt = $_) =~ s/pl$/txt/;
rename($_, $txt);
}
}
这不起作用/不起作用,因为我对File :: Find :: Rule
不够熟悉是否有更好的方法遍历目录以更改文件扩展名?
答案 0 :(得分:0)
#!/usr/local/bin/perl
use strict;
use warnings;
use File::Find;
my @argv;
my $dir = $ARGV[0];
find(\&dirRecurs, $dir);
sub dirRecurs{
if (-f)
{
(my $txt = $_) =~ s/pl$/txt/;
rename($_, $txt);
}
}
我在@David发送给我的教程的帮助下想出来了!谢谢!