如何使用File :: Find跳过.svn文件夹?

时间:2011-06-08 21:54:25

标签: perl

我正在编写一个Perl脚本,它使用以下方法迭代目录及其子目录中的文件名:

find(\&getFile, $mainDir);

sub getFile {
    my $file_dir = $File::Find::name;
    return unless -f $file_dir;    # return if its a folder
}

文件结构如下所示:

main/classes/pages/filename.php

但是由于版本控制,每个文件夹和子文件夹都有一个隐藏的.svn目录,其中包含.svn-base后缀的每个文件的副本:

main/.svn/classes/pages/filename.php.svn-base

我想知道是否有一个类似我以前使用的返回语句:

return if ($file_dir eq "something here");

跳过所有.svn个文件夹,找不到带有.svn-base后缀的文件名。我一直在摆弄正则表达式,并且在没有太多运气的情况下搜索了几个小时。我几天只使用perl。

1 个答案:

答案 0 :(得分:4)

您可以使用

return if ($file_dir !~ /\.svn/);

!~相当于!($file_dir =~ /\.svn/)=~运算符将变量与模式进行比较。