使用.cpp,.hpp,.h,.c扩展名生成文件名的完整路径

时间:2014-03-07 12:37:41

标签: perl find

在perl中,给定两个或更多基目录,我需要找到.cpp.hpp.h.c扩展名的文件,并生成像Windows查找一样的完整路径工具。

比如说 我有两个或更多基目录

C:\foo\bar\
C:\foo\bar\barbar

我需要在给定的基目录中生成.cpp.hpp.h.c文件名的完整路径。

这些文件可能存在于C:\foo\bar\bar\foo\bar\foo\中,但我只知道上面给出的几个基本目录

2 个答案:

答案 0 :(得分:1)

use File::Find;

find(\&print_names, ('thisdir/one/', 'thatdir/two'));

sub print_names {
    my $name = $File::Find::name;
    print "$name\n"if $name =~ /\.(cpp|hpp|h|c)$/;
}

答案 1 :(得分:1)

要转换使用混合向后和向前斜杠的文件路径,您需要使用File::Spec模块。 File::Spec::Functions包装器模块只是稍微整理一下来调用它包含的函数。

试试这个

use strict;
use warnings;

use File::Find;
use File::Spec::Functions qw/canonpath/;

find(sub {
  print canonpath($File::Find::name), "\n" if -f and /\.[ch](?:pp)?$/;
}, qw{ C:\foo\bar\ C:\foo\bar\barbar });