perl 如何遍历指定路径下的不同文件夹下的指定扩展名文件并读取内容
4个回答
展开全部
给你一个比较复杂点的例子。。。。
opendir (DIR,"X:\\")||die"$!";
chdir("X:\\");
@dirs=grep{/^\.\.?$/}readdir DIR;
foreach $dir(@dirs){
opendir (DIR2,$dir)||die"$!";
@files=grep{/indd$/}readdir DIR2;
close DIR2;
}
close DIR;
当然还有更多的方法,可以用glob,LS所说的File::Find等等。。。。。
opendir (DIR,"X:\\")||die"$!";
chdir("X:\\");
@dirs=grep{/^\.\.?$/}readdir DIR;
foreach $dir(@dirs){
opendir (DIR2,$dir)||die"$!";
@files=grep{/indd$/}readdir DIR2;
close DIR2;
}
close DIR;
当然还有更多的方法,可以用glob,LS所说的File::Find等等。。。。。
展开全部
Perl codeuse strict; use threads; use threads::shared; use File::Find; my $exit_flag :shared; my $job_thread = threads->create(\&job); while (1) { print '>>> '; chomp(my $cmd = <>); # 当用户输入exit命令时,设置退出标记,并等待job线程结束。 if ($cmd =~ 'exit') { $exit_flag = 1; $job_thread->join(); last; } } sub job { until ($exit_flag) { # 如果设置了退出标记,则终止循环。 # 维护一个最近20个文件的列表。每找到一个新文件,将其加入该列表, # 并按照最后访问时间重新排序,将排名20位之后的文件删除。 my @latest_files; find( sub { push @latest_files, [ $File::Find::name, -M $File::Find::name ]; if (@latest_files > 20) { sort { $a->[1] <=> $b->[1] } @latest_files; unlink map { $_->[0] } @latest_files[20..$#latest_files]; } }, '/ccd/pa/' ); # 删除所有大于5M的文件。 find( sub { if (-s $File::Find::name > 5000000) { unlink $File::Find::name; } }, '/ccd/pb/'; } } }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
use File::Find ;
更多追问追答
追问
能不能具体点啊?比如说在X盘下,有多个文件夹,我要读取这些文件加下面的后缀是indd文件内容
追答
CPAN
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-28
展开全部
opendir and open
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询