如何使用命令行将所有.pdf文件名打印到输出文件?

时间:2010-12-23 02:51:20

标签: windows perl command-line printing

这在Linux中看起来很简单,但我正在尝试将目录及其子目录中的*.pdf个文件的名称打印到输出文件中。我在我的Windows机器上安装了Perl。

这是一种简单的方法吗?

5 个答案:

答案 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"));