这在Linux中看起来很简单,但我正在尝试将目录及其子目录中的*.pdf
个文件的名称打印到输出文件中。我在我的Windows机器上安装了Perl。
这是一种简单的方法吗?
答案 0 :(得分:30)
与Linux没什么不同。
dir *.pdf > fileyouwant.txt
如果您只想要文件名,可以使用
执行此操作dir/b *.pdf > fileyouwant.txt
如果你还想要子目录,
dir/s/b *.pdf > fileyouwant.txt
如果您不在该目录中以
开头dir/s/b C:\Path\*.pdf > fileyouwant.txt
答案 1 :(得分:1)
use strict;
use warnings;
use File::Find;
my $dirname = shift or die "Usage: $0 dirname >outputfile";
File::Find::find( sub {
print $File::Find::name, "\n" if $File::Find::name =~ /\.pdf\z/
}, $dirname );
答案 2 :(得分:1)
File::Find::Rule通常比File::Find更好用。
use File::Find::Rule;
my $rule = File::Find::Rule->file()->name('*.pdf')->start('C:/Path/');
while (defined (my $pdf = $rule->match)) {
print "$pdf\n";
}
或只是
use File::Find::Rule;
print "$_\n" for File::Find::Rule->file()->name('*.pdf')->in('C:/Path/');
答案 3 :(得分:0)
使用Perl,您几乎肯定会使用File::Find核心模块。
答案 4 :(得分:0)
请参阅File::Glob模块。
具体做法是:
#!/usr/bin/perl
use File::Glob ':glob'; # Override glob built-in.
print join("\n",glob("*.pdf"));