كيف يمكنني الحصول على كل الملفات في دليل، ولكن ليس في الدلائل، في بيرل؟
سؤال
وكيف يمكنني العثور على كافة الملفات التي تطابق معايير معينة (-M
، سن تعديل في أيام) في قائمة الأدلة، ولكن ليس في الدلائل الخاصة بهم؟
وكنت أرغب في استخدام ملف :: البحث، ولكن يبدو أنه يذهب دائما إلى الدلائل أيضا.
المحلول
@files = grep { -f && (-M) < 5 } <$_/*> for @folders;
نصائح أخرى
استخدم readdir أو <وأ href = "HTTP: //search.cpan كافيه / perldoc / ملف :: إلتهم "يختلط =" نوفولو noreferrer "> ملف :: :: إلتهم read_dir بالتعاون مع <لأ href =" http://perldoc.perl.org/functions/grep. أتش تي أم أل "يختلط =" نوفولو noreferrer "> البقرى .
#!/usr/bin/perl
use strict;
use warnings;
use File::Slurp;
use File::Spec::Functions qw( canonpath catfile );
my @dirs = (@ENV{qw(HOME TEMP)});
for my $dir ( @dirs ) {
print "'$dir'\n";
my @files = grep { 2 > -M and -f }
map { canonpath(catfile $dir, $_) } read_dir $dir;
print "$_\n" for @files;
}
ويمكنك تعيين ملف :: البحث :: تقليم ضمن الدالة مطلوبين لتخطي أشجار الدليل. إضافة شيء من هذا القبيل $ الملف :: البحث :: تقليم = 1 إذا كان (&& -d $ الملف :: البحث :: اسم ني ".")؛
لا تنتمي إلى StackOverflow