加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl脚本递归列出目录中的所有文件名

发布时间:2020-12-15 22:03:36 所属栏目:大数据 来源:网络整理
导读:我已经写了以下Perl脚本,但问题是它总是在其他部分,并且不报告文件.我确实有在我输入的目录中的文件.我在这里做错了什么? 我的要求是递归访问目录中的每个文件,打开它并以字符串进行读取.但逻辑的第一部分是失败的. #!/usr/bin/perl -wuse strict;use warni
我已经写了以下Perl脚本,但问题是它总是在其他部分,并且不报告文件.我确实有在我输入的目录中的文件.我在这里做错了什么?

我的要求是递归访问目录中的每个文件,打开它并以字符串进行读取.但逻辑的第一部分是失败的.

#!/usr/bin/perl -w
use strict;
use warnings;
use File::Find;

my (@dir) = @ARGV;
find(&;process_file,@dir);

sub process_file {
    #print $File::Find::name."n";
    my $filename = $File::Find::name;
    if( -f $filename) {
        print " This is a file :$filename n";
    } else {
        print " This is not file :$filename n";
    }
}

解决方法

$File :: Find :: name给出了相对于原始工作目录的路径.但是,File::Find不断更改当前的工作目录,除非另有说明.

使用no_chdir选项,或者使用只包含文件名部分的-f $_.我推荐前者.

#!/usr/bin/perl -w
use strict; 
use warnings;
use File::Find;

find({ wanted => &;process_file,no_chdir => 1 },@ARGV);

sub process_file {
    if (-f $_) {
        print "This is a file: $_n";
    } else {
        print "This is not file: $_n";
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读