2009年6月29日星期一

[PerlChina] Re: 请教:用perl怎么把文件夹中所有文件明提取出来

以前写过一个处理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 访问该论坛

-~----------~----~----~----~------~----~------~--~---

没有评论: