perl file::find应用学习

1454阅读 0评论2012-12-21 kangjunping
分类:Python/Ruby

原创博文,转载请说明出处http://blog.sina.com.cn/s/blog_58c876b101013nl9.html


删除当前目录及子目录下的“.svn”文件夹。

其实用命令行的话,可能就是一句话的事,例如:

Linux下输入 find . -type d -name ".svn"|xargs rm -rf

或者Win32 cmd下输入 for /r . %%i in (.svn) do if exist "%%i" rd /s/q "%%i"


这里只是借着问题记录一下File::Find模块的用法。

贴上代码:

#!c:/perl/bin/perl.exe -w

use strict;

use File::Find;

sub del_svn {

    if ($_ eq ".svn") {

        system("rd /s /q $_");

    }

}

finddepth(\&del_svn, ".");

print "finished.\n";

system("pause");


参考

1File::Find有两个方法:

find 是自上而下遍历。

finddepth 是自下而上遍历。

二者调用格式相同,上例中 finddepth(\&del_svn, "."),第一个参数是调用的子函数,第二个参数是根目录。

2)有三个属性

$File::Find::dir 是当前目录全路径。

$_ 是当前文件名(不含路径)。

$File::Find::name 是当前文件的完整路径。

上一篇:Linux操作系统下的串口通信学习笔记
下一篇:Android上HDMI介绍