私は非常にperlの初心者なので、我慢してください。
OS X でフォルダーを再帰する方法を探していたところ、この解決策に出会いました:ディレクトリ内のすべてのファイルをトラバースする方法...
引数で検索フォルダーを指定できるように、perreal の回答 (以下のコードを参照) を少し変更しました。つまり、私はmy @dirs = (".");
私の@dirs = ($ARGV[0]);
しかし、何らかの理由でこれは機能しません。フォルダーを開きますが、「。」を除いて、サブディレクトリをフォルダーとして識別しません。および '..' であるため、指定されたルートを実際に超えたことはありません。
フォルダ (例: \Volumes\foo\bar) を積極的に指定しても、まだ機能しません。しかし、目的のフォルダー (foo\bar) に戻ってmy @dirs = (".");
座って、独自のフォルダー (foo\boo\script.pl) からスクリプトを呼び出すと、正常に動作します。
これは「予想される」動作ですか?何が足りないの?!
どうもありがとう、
マット
use warnings;
use strict;
my @dirs = (".");
my %seen;
while (my $pwd = shift @dirs) {
opendir(DIR,"$pwd") or die "Cannot open $pwd\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
if (-d $file and ($file !~ /^\.\.?$/) and !$seen{$file}) {
$seen{$file} = 1;
push @dirs, "$pwd/$file";
}
next if ($file !~ /\.txt$/i);
my $mtime = (stat("$pwd/$file"))[9];
print "$pwd $file $mtime";
print "\n";
}
}