以前写过一个处理FTP文件夹的脚本,遍历文件夹并且算所有的MD5.
刚刚改了一下,做个清理文件夹的脚本,其实都是一样的。
push (my @dirs,'/store/MetaBase/');
push (@dirs,'/store/logs/');
while (@dirs) {
my $rcdir = shift @dirs;
opendir DIR,$rcdir or die "Cant open Dir $rcdir :$!\n";
while (my $name = readdir DIR)
{
if ($name!~ /\.?\.$/)
{
my $filename = $rcdir.$name;#文件夹加上文件名,这样就是完整路径了
if(-f $filename)
{
&ulog(time." delete:$filename clear.pl "."\n");
unlink $filename;
}
#如果是文件夹,那么放入数组中等待遍历。
else
{
push (@dirs,$filename."/");
}
}
}
}
如果是文件,就删除(或者记录路径等等操作),如果是文件夹,就放到数组里。然后每次从数组里取一个文件夹,重复操作就可以了。稍微有点傻,不过还是挺快的。
2009-06-30
发件人: Qiang (James)
发送时间: 2009-06-30 11:24:05
收件人: perlchina
抄送:
主题: [PerlChina] Re: 请教:用perl怎么把文件夹中所有文件明提取出来
刘泽琛 wrote:
> 请高手指点:
>
> 怎么用Perl把一个文件夹中的所有文件的完整路径加文件名提取出来,并且输出到
> 一个文件中。输出的文件中,每一行列出一个文件的全路径。
>
> 比如待提取的文件夹路径为
> /data/perl/waiting/
>
> 生成的文件为 /data/perl/mine/list
>
咳, 生成的文件应该是 /data/perl/waiting/mine/list
如果你是对固定目录操作,读取目录内容(readdir)后在判断是否文件(-d) 然后
dir + 文件名就可以了。
如果你是对多个目录或目录递归操作,使用 File::Find 即可。
具体如何写代码请查相关 perl 文档。
Qiang(James)
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---
没有评论:
发表评论