如何使用perl遍历一个目录下的所有文件

如何使用perl遍历一个目录下的所有文件,第1张

SubTest()DimMyName,Dic,Did,I,T,F,TT,MyFileNameT=TimeSetDic=CreateObject("Scripting.Dictionary")'创建一个字典对象SetDid=CreateObject("Scripting.Dictionary")Dic.Add("D:\MyDocuments\"),""I=0DoWhileIDic.CountKe=Dic.keys'开始遍历字典MyName=Dir(Ke(I),vbDirectory)'查找目饥备山录DoWhileMyName""IfMyName"."AndMyName".."ThenIf(GetAttr(Ke(I)&MyName)AndvbDirectory)=vbDirectoryThen'如果是次级目录Dic.Add(Ke(I)&MyName&"\"),""'就往字典中添加这个次级目录名作为一个条目EndIfEndIfMyName=Dir'继续遍历烂中寻找LoopI=I+1LoopDid.Add("文件清单"),""'以查找D盘MyDocuments下所有EXCEL文件为例ForEachKeInDic.keysMyFileName=Dir(Ke&"*.xls")DoWhileMyFileName""Did.Add(Ke&MyFileName),""MyFileName=DirLoopNextForEachShInThisWorkbook.WorksheetsIfSh.Name="XLS文件清单"ThenSheets("XLS文滚桥件清单").Cells.DeleteF=TrueExitForElseF=FalseEndIfNextIfNotFThenSheets.Add.Name="XLS文件清单"EndIfSheets("XLS文件清单").[A1].Resize(Did.Count,1)=WorksheetFunction.Transpose(Did.keys)TT=Time-TMsgBoxMinute(TT)&"分"&Second(TT)&"秒"EndSub

不知道你这里读取具体指什么,我就把文件名打印出来,把文件内容打印出来吧。(程序指定两个参数,第一个参数是指定的文件夹名橘汪,每二慎指个参数是指定的扩展名。)

#!/usr/bin/perl

use strict

use warnings

die "Usage: $0 <dir><extion>\n" unless @ARGV == 2

my $Dir = $ARGV[0]

my $Ext = $ARGV[1]

opendir(DH, "$Dir") or die "Can't open: $!\n"

#读取指定文件夹下面的指定扩展名的文件名,保存到数组圆孝仔里。

my @list = grep {/$Ext$/ &&-f "$Dir/$_" } readdir(DH)

closedir(DH)

chdir($Dir) or die "Can't cd dir: $!\n"

foreach my $file (@list){

open(FH, "$file") or die "Can't open: $!\n"

print "$file:\n"

while(<FH>){

print

}

print "\n"

close(FH)

}

给你一个比较复杂点的例子。。。。

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等等。。。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8150923.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存