对多个文件重复进行同一个动作

ZDNet软件频道 时间:2004-02-17 作者:ZDNet China |  我要评论()
本文关键词:
如果你想要将一个动作应用到某个目录及其所有子目录里的所有文件上,那么File::Find模块可以提供完美的解决方案。
本文译自Builder.com,未经许可请勿转载

如果你想要将一个动作应用到某个目录及其所有子目录里的所有文件上,那么File::Find模块可以提供完美的解决方案。

从File::Find可以衍生出一个简单的find程序,它会接受代码参照以及目录的列表。代码参照被调用,用在指定目录及其子目录里的每个条目(文件或者目录)上。

在find调用代码参数之前,它会转换到正在被访问的目录。变量File::Find::dir被设置为当前的目录路径。变量File::Find::name包含有正在被访问的文件或者目录的完整路径,而$_则包含有基本名字(base name)。

下面的例子会打印出目录结构:

useFile::Find;

push @ARGV, '.' if (! @ARGV);

find &display, @ARGV;

sub display
{
     print $File::Find::name, -d $_ ? "/ <DIR> " : " ";
}

File::Find模块还有一个程序——finddepth,它能保证对象会按照深度的顺序被返回(也就是说,它在返回目录之前会返回目录下的文件)。普通的find程序会以随机的顺序返回找到的对象。

Perl的File::Find模块使得循环访问子目录树下的所有文件变得很容易。


本文作者:James Brown具有20年的行业开发专长和经验,拥有多重工作背景,包括数字硬件设计,网络操作系统开发和分布式计算等。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134