Как я могу получить все файлы в каталоге, но не в подкаталогах, в Perl?
Вопрос
Как найти все файлы, которые соответствуют определенным критериям ( -M
, возраст модификации в днях) в списке каталогов, но не в их подкаталогах?
Я хотел использовать File :: Find, но похоже, что он всегда идет и в подкаталогах.
Решение
@files = grep { -f && (-M) < 5 } <<*>/*> for @folders;
Другие советы
Используйте readdir или File :: Slurp :: read_dir в сочетании с grep .
#!/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, Используйте readdir или File :: Slurp :: read_dir в сочетании с grep .
<*>) } read_dir $dir;
print " Используйте readdir или File :: Slurp :: read_dir в сочетании с grep .
<*>\n" for @files;
}
Вы можете установить File :: Find :: prune в функции 'wanted', чтобы пропустить деревья каталогов. Добавьте что-то вроде $ File :: Find :: prune = 1 if (-d & amp; $ File :: Find :: name ne ". & Quot;); Р>
Не связан с StackOverflow