Chinaunix首页 | 论坛 | 博客
  • 博客访问: 287833
  • 博文数量: 68
  • 博客积分: 1121
  • 博客等级: 少尉
  • 技术积分: 634
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 09:43
文章分类
文章存档

2014年(1)

2013年(8)

2012年(37)

2011年(22)

分类: Python/Ruby

2012-12-21 11:30:14

原创博文,转载请说明出处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 是当前文件的完整路径。

阅读(1450) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~