在Linux中这似乎很容易,但是我试图将一个目录及其子目录中的* .pdf文件的名称打印到输出文件。 我在我的Windows机器上安装了perl。 什么是简单的方法来做到这一点?
谢谢,杰克
和Linux没什么不同。
dir *.pdf > fileyouwant.txt
如果你只想要文件名,你可以这样做
dir/b *.pdf > fileyouwant.txt
如果你还想要subdirs,
dir/s/b *.pdf > fileyouwant.txt
如果你不在那个目录下面,
dir/s/b C:\Path\*.pdf > fileyouwant.txt
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 );
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/');
使用Perl,你几乎肯定会使用File :: Find核心模块。
请参阅File :: Glob模块。
特别:
#!/usr/bin/perl use File::Glob ':glob'; # Override glob built-in. print join("\n",glob("*.pdf"));