¿Cómo puedo obtener todos los archivos en un directorio, pero no en subdirectorios, en Perl?
Pregunta
¿Cómo puedo encontrar todos los archivos que coinciden con ciertos criterios ( -M
, antigüedad de la modificación en días) en una lista de directorios, pero no en sus subdirectorios?
Quería usar File :: Find, pero parece que siempre va a los subdirectorios también.
Solución
@files = grep { -f && (-M) < 5 } <<*>/*> for @folders;
Otros consejos
Utilice readdir o File :: Slurp :: read_dir junto con 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, Utilice readdir o File :: Slurp :: read_dir junto con grep .
<*>) } read_dir $dir;
print " Utilice readdir o File :: Slurp :: read_dir junto con grep .
<*>\n" for @files;
}
Puede configurar File :: Find :: prune dentro de la función 'wanted' para omitir los árboles de directorios. Agregue algo como $ File :: Find :: prune = 1 if (-d & amp; & amp; $ File :: Find :: name ne ". & Quot;);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow