遍历目录

时间:2014-11-19 01:48:49

标签: perl file-extension

我正在尝试遍历目录以更改这些目录中的某些文件扩展名。

我已经到了可以通过命令行提供的目录,但是我不能让它遍历那些目录'子目录。

例如:如果我想更改目录测试中的文件扩展名,那么如果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

不够熟悉

是否有更好的方法遍历目录以更改文件扩展名?

1 个答案:

答案 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发送给我的教程的帮助下想出来了!谢谢!