Ben gerçekten tüm dizin geçişi bunlara gerek yok çünkü ben sadece glob
kullanmak düşünüyorum find
:
use File::Find::Closures qw(find_by_regex);
use File::Find qw(find);
my($wanted, $reporter) = File::Find::Closures::find_by_regex(qr/\.txt\z/);
find($wanted, @dirs);
my @files = $reporter->();
Normalde, (CPAN v5.20 ama kaldırıldı) find2perl
ile Perl programa bulunan bir şeyi (1) komutu kapatabilirsiniz:
% find2perl my_dir -d 2 -name "*.txt"
Ama bunu kapalı bırakmak böylece görünüşte find2perl
, -maxdepth
anlamıyor: sen, bir preprocess
aşamayı kapsamaktadır gereken başka türlü başlayan programlama takabilirsiniz olduğunu Şimdi
% find2perl my_dir -name "*.txt"
#! /usr/local/perls/perl-5.13.5/bin/perl5.13.5 -w
eval 'exec /usr/local/perls/perl-5.13.5/bin/perl5.13.5 -S $0 ${1+"[email protected]"}'
if 0; #$running_under_some_shell
use strict;
use File::Find();
# Set the variable $File::Find::dont_use_nlink if you're using AFS,
# since AFS cheats.
# for the convenience of &wanted calls, including -eval statements:
use vars qw/*name *dir *prune/;
*name = *File::Find::name;
*dir = *File::Find::dir;
*prune = *File::Find::prune;
sub wanted;
# Traverse desired filesystems
File::Find::find({wanted => \&wanted}, 'my_dir');
exit;
sub wanted {
/^.*\.txt\z/s
&& print("$name\n");
}
ağacı kes.
'my @files = \' $ bulmak $ my_dir -maxdepth 2 -name * .txt \ ';' ... 'Wanted' altını alamıyorum. Bir regex veremez miyim? –
[Perl ile dosyaları bulma] ile ilgili başka bir soru (http://stackoverflow.com/questions/17754931/finding-files-with-perl), aşağıdaki yanıtlarda belirtilmeyen bazı alternatiflerden bahseder. –