命令行打印文件名输出文件

在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"));