原创博文,转载请说明出处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");
参考
1)File::Find有两个方法:
find 是自上而下遍历。
finddepth 是自下而上遍历。
二者调用格式相同,上例中 finddepth(\&del_svn, "."),第一个参数是调用的子函数,第二个参数是根目录。
2)有三个属性
$File::Find::dir 是当前目录全路径。
$_ 是当前文件名(不含路径)。
$File::Find::name 是当前文件的完整路径。