在perl中,给定两个或更多基目录,我需要找到.cpp
,.hpp
,.h
,.c
扩展名的文件,并生成像Windows查找一样的完整路径工具。
比如说 我有两个或更多基目录
C:\foo\bar\
C:\foo\bar\barbar
我需要在给定的基目录中生成.cpp
,.hpp
,.h
,.c
文件名的完整路径。
这些文件可能存在于C:\foo\bar\bar\foo\bar\foo\
中,但我只知道上面给出的几个基本目录
答案 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 });