perl怎样遍历文件夹
❶ 如何使用perl遍历一个目录下的所有文件
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=.WorksheetsIfSh.Name="XLS文件清单"ThenSheets("XLS文件清单").Cells.DeleteF=TrueExitForElseF=.Add.Name="XLS文件清单"EndIfSheets("XLS文件清单").[A1].Resize(Did.Count,1)=WorksheetFunction.Transpose(Did.keys)TT=Time-TMsgBoxMinute(TT)&"分"&Second(TT)&"秒"EndSub
❷ 求教,win下用perl语言遍历“文件夹1”下所有“.log”类型文件,拷贝到“文件夹2”里
PERL编列文件夹使用opendir、readdir、closedir进行,不过你的这个需求,可以直接系统调用吧:
system(" 文件夹1\\*.log 文件夹2\\");
❸ 怎样用perl将一个记录文件路径的数组遍历,找出每个文件的最后修改时间,并且最终存放在一起
my @array;
foreach (@filelist)
{
my $mtime = localtime(stat($_))
push(@array,"$_:$mtime");
}
❹ perl语言,window下,如何实现,遍历整个文件夹,将该文件夹下后缀名为.log的所有文件的文件路径
前提,你windows下装了perl环境。
代码:test.pl 'c:\usrdirctory' 'd:\out.txt'
两个参数分别为:你要遍历的目录路径;你要保存有用信息的文件路径。
如果不方便用命令行调用的话,就写死在下面的$dir,$dst后面。
例如 $dir = 'c:\usrdirctory';
#!/usr/bin/perl
my $dir = $ARGV[0];
my $dst = $ARGV[1];
$dst ||= "temp_log.txt";
if (!-d $dir) {
print "$dir is not a valid directory!\n";
exit(-1);
}
if (!opendir DIR , $dir){
print "cannot open dir, $dir\n";
exit(-1);
}
else{
foreach (readdir DIR) {
if ($_ =~ /\.log$/) {
print $_,"\n";
$out .= "$_\n";
}
}
closedir DIR;
}
if (!open FILE,">$dst"){
print "open file,$dst failed!\n";
exit(-1);
}
else{
print FILE $out;
close FILE;
}
print "Done!\n";
exit(0);
❺ perl如何遍历指定文件夹下的指定扩展名文件,并按时间顺序要求删除
用正则表达式去找你要删的文件,匹配扩展名。用stat函数获取文件访问/创建时间。
❻ perl语言怎么循环生成文件,做遍历测试用的
#!/bin/perl -w
for(my $j = 0 ; $j < 4; $j = $j + 1)
{
for(my $k = 0; $k < 2; $k++)
{
for(my $l = 0; $l < 4; $l++)
{
for(my $m = 0; $m < 16; $m++ )
{
open IN,"test.txt" or die "test.txt";
open OUT, ">test_$j\_$k\_$l\_$m.txt" or die "test_$j\_$k\_$l\_$m.txt";
print "$j\_$k\_$l\_$m\n";
while(<IN>)
{
$_=~s/a=0/a=$j/g;
$_=~s/b=0/b=$k/g;
$_=~s/c=0/c=$l/g;
$_=~s/d=0/d=$m/g;
print OUT $_;
}
}
}
}
}
你的之所以实现不了,可能和你的test_$j_$k这样的命名方式有关。
也可能和你文件句柄打开位置有关。上面的代码是我修改过的你可以再试试,如果还有问题,可以及时联系。
❼ perl 遍历根目录下的子目录即子目录下的子目录 unix下 把遍历得到的路径存到数组下
#!/usr/bin/perl
$directory ="";
$directory = $ARGV[0]; # 定义所要遍历的目录,默认为脚本所在的目录
@files = q{};
system "touch temp_files"; # 建立一个临时文件用来存储所有的文件和目录信息
system "find ./$directory >> temp_files"; #将信息导入到临时文件中
open(DAT, temp_files) || die("Could not open temp_files!");
@files = <DAT>; #将信息复制到数组files中
system "rm temp_files";
foreach $each_row(@files) #输出数组files的内容
{
print "$each_row";
}
#假设脚本保存名字为run.pl,则运行的时候,比如要遍历/home/usr里的目录和文件,则
run.pl home/usr
如果仅仅要遍历目录,则
system "find ./$directory >> temp_files";
可能要改成
system "find ./$directory -type d >> temp_files";
❽ perl 如何遍历指定路径下的不同文件夹下的指定扩展名文件并读取内容
给你一个比较复杂点的例子。。。。
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来遍历一个文件夹下的所有文件夹,找出所有名字中带xx的文件,然后将这些文件拷贝到另一个文件
http://..com/link?url=-XB7dhH4zdy57BXkWiw_6-aZsuj_2aUdvjfKJETsZ_
这个讲的遍历文件挺好的,你看看呗