這在Linux中似乎很容易,但我試圖將目錄及其子目錄中的* .pdf文件的名稱打印到輸出文件。我在我的Windows機器上安裝了perl。什麼是一個簡單的方法來做到這一點?命令行打印文件名輸出文件
感謝, 傑克
這在Linux中似乎很容易,但我試圖將目錄及其子目錄中的* .pdf文件的名稱打印到輸出文件。我在我的Windows機器上安裝了perl。什麼是一個簡單的方法來做到這一點?命令行打印文件名輸出文件
感謝, 傑克
沒有比Linux太大的不同。
dir *.pdf > fileyouwant.txt
如果你只想要的文件名,你可以做到這一點與
dir/b *.pdf > fileyouwant.txt
如果你也想子目錄,
dir/s/b *.pdf > fileyouwant.txt
如果不在該目錄下手
dir/s/b C:\Path\*.pdf > fileyouwant.txt
使用Perl,你應該幾乎肯定會使用File::Find核心模塊。
請參閱File::Glob模塊。
具體來說:
#!/usr/bin/perl
use File::Glob ':glob'; # Override glob built-in.
print join("\n",glob("*.pdf"));
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/');
子目錄中這不會查找文件。 – 2010-12-23 02:55:18
`dir`是否對子目錄進行遞歸搜索? – 2010-12-23 02:55:45
dir/s/b。你必須首先進入目標頂層目錄。 – ysth 2010-12-23 03:01:39