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

Recursive Find File In Directory

发布时间:2020-12-15 21:11:22 所属栏目:大数据 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #!/usr/bin/perl -wuse utf8;use strict;use warnings;sub lsrp { my ($dir,$sub,$ext,$print) = @_; my @dirs = ($dir); my @rets = (); while (my $

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#!/usr/bin/perl -w

use utf8;
use strict;
use warnings;

sub lsrp {
    my ($dir,$sub,$ext,$print) = @_;

    my @dirs = ($dir);

    my @rets = ();

    while (my $dir = pop(@dirs)) {
        local *DH;
        if (!opendir(DH,$dir)) {
            warn "Cannot opendir $dir: $! $^E";
            next;
        }

        foreach (readdir(DH)) {
            if ($_ eq '.' || $_ eq '..') {
                next;
            }
            my $file = $dir.$_;         
            if (!-l $file && -d _) {
                $file .= '/';
                push(@dirs,$file) if $sub;
            } elsif ($file =~ /.Q$extE$/) {
                push @rets,$file;
                $print->($file) if defined($print);
            }
        }
        closedir(DH);
    }

    return @rets;
}

my $find_dir = shift @ARGV;
my $find_ext = shift @ARGV;
my $find_sub = shift @ARGV;

if (!defined($find_dir)) {
	help();
	exit;
}

if (!defined($find_ext)) {
	help();
	exit;
}

if (!defined($find_sub)) {
	$find_sub = 0;
}

if ($find_dir =~ /[^/]$/) {
	$find_dir .= '/';
}
$find_ext =~ s/^.//;

sub p {
	print (shift . "n");  
}

my @files = lsrp($find_dir,$find_sub,$find_ext,&;p);

if ($#files <= 0) {
	print "Found nothing.n";
	exit;
}

#print "Found " . $#files . ($#files <= 1 ? " file" : " files") . "n";
#
#foreach (@files) {
#	print " -> ".$_."n";
#}

exit;

sub help {
	print "Usage:n";
	print "t$0".' [directroy] [extension] [recursion]'."n";
	print "Sample:nt$0 . pl 1 n";
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

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

    推荐文章
      热点阅读