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_
這個講的遍歷文件挺好的,你看看唄