¿Hay alguna función en Perl que liste todos los archivos y directorios en un directorio? Recuerdo que Java tiene el File.list()
para hacer esto? ¿Existe un método comparable en Perl?¿Cómo puedo hacer una lista de todos los archivos en un directorio con Perl?
Respuesta
Si usted desea conseguir el contenido del directorio dado, y sólo él (es decir, sin subdirectorios), la mejor manera es utilizar opendir/readdir/closedir:
opendir my $dir, "/some/path" or die "Cannot open directory: $!";
my @files = readdir $dir;
closedir $dir;
También puede utilizar:
my @files = glob($dir . '/*');
Pero en mi opinión no es tan bueno - sobre todo porque pegote es algo bastante complejo (puede filtrar los resultados de forma automática) y utilizarlo para obtener todos los elementos del directorio parece como una tarea demasiado sencilla.
Por otro lado, si usted necesita para obtener el contenido de todos los directorios y subdirectorios, no es básicamente una solución estándar:
use File::Find;
my @content;
find(\&wanted, '/some/path');
do_something_with(@content);
exit;
sub wanted {
push @content, $File::Find::name;
return;
}
esto debería hacerlo.
my $dir = "bla/bla/upload";
opendir DIR,$dir;
my @dir = readdir(DIR);
close DIR;
foreach(@dir){
if (-f $dir . "/" . $_){
print $_," : file\n";
}elsif(-d $dir . "/" . $_){
print $_," : folder\n";
}else{
print $_," : other\n";
}
}
usted debe comprobar opendir para el fracaso (opendir ... o morir "Mensaje de error ps Además, ¿me estoy perdiendo algo? ¿Qué está haciendo Win32 :: GUI :: DoEvents() aquí? (No veo nada relevante en la cuestión.) – Telemachus
esta es la mejor manera yo no quiero o deseo de recordar expresiones regulares para algo que debería ser fácil de hacer, voy a utilizar esto para crear una función como la lista ($ dir ,"F"); para los archivos "d" para el directorio, gracias por publicar esto – Geomorillo
readdir() hace eso.
Comprobar http://perldoc.perl.org/functions/readdir.html
opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
@dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
closedir DIR;
use File::Find;
finddepth(\&wanted, '/some/path/to/dir');
sub wanted { print };
Se va a ir a través de los subdirectorios si es que existen.
Esto listará todo (incluyendo subdirectorios) desde el directorio en el que especifique, en orden y con los atributos. He pasado días buscando algo para hacer esto, y tomé partes de toda esta discusión, y un poco de la mía, y las armé juntas. ¡¡DISFRUTAR!!
#!/usr/bin/perl --
print qq~Content-type: text/html\n\n~;
print qq~<font face="arial" size="2">~;
use File::Find;
# find(\&wanted_tom, '/home/thomas/public_html'); # if you want just one website, uncomment this, and comment out the next line
find(\&wanted_tom, '/home');
exit;
sub wanted_tom {
($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,$atime,$mtime,$ctime,$blksize,$blocks) = stat ($_);
$mode = (stat($_))[2];
$mode = substr(sprintf("%03lo", $mode), -3);
if (-d $File::Find::name) {
print "<br><b>--DIR $File::Find::name --ATTR:$mode</b><br>";
} else {
print "$File::Find::name --ATTR:$mode<br>";
}
return;
}
¡Arghh, mis ojos! – javs
Si usted es un vago como yo que le gustaría usar el módulo File::Slurp. La voluntad función read_dir lee el contenido del directorio en una matriz, elimina los puntos, y si se necesita prefijo los archivos devueltos con el directorio de rutas absolutas
my @paths = read_dir('/path/to/dir', prefix => 1) ;
- 1. ¿Cómo puedo enumerar todos los archivos en un directorio usando Perl?
- 2. lista de PHP todos los archivos en el directorio
- 3. Eliminar todos los archivos en un directorio con Python
- 4. ¿Cómo obtener la lista de todos los archivos con extensión ESY en un directorio?
- 5. ¿Cómo puedo obtener una lista de todos los archivos con una cierta extensión desde un directorio específico?
- 6. ¿Cómo incluir todos los archivos de un directorio con cmake?
- 7. Cómo obtener archivos en un directorio, incluidos todos los subdirectorios
- 8. Unir todos los archivos en un directorio, con un separador
- 9. ¿Cómo puedo recorrer archivos en un directorio en Perl?
- 10. ¿Cómo recupero todos los nombres de archivos en un directorio?
- 11. Obtener rutas absolutas de todos los archivos en un directorio
- 12. ¿Cómo puedo hacer una búsqueda masiva y reemplazar con Perl?
- 13. Obtener una lista de todos los archivos dentro de un directorio en vb.net
- 14. Copie todos los archivos en el directorio
- 15. ¿Cómo puedo incluir todos los archivos JavaScript en un directorio a través de un archivo JavaScript?
- 16. Obtener una lista de todos los archivos en un directorio (recursivo)
- 17. Android, ¿cómo puedo obtener una lista de todos los archivos en una carpeta?
- 18. Lista de todos los archivos de un directorio de forma recursiva con Java
- 19. ¿Cómo obtener todos los archivos en un directorio?
- 20. ¿Cómo formatear todos los archivos bajo un directorio en emacs?
- 21. Buscar todos los archivos CSV en un directorio usando Python
- 22. cómo hacer referencia a todos los archivos jar en un directorio en mi archivo por lotes
- 23. Script PHP para recorrer todos los archivos en un directorio?
- 24. ¿Cómo puedo hacer una lista recursiva de todos los directorios en una ubicación, en primer lugar?
- 25. ¿Cómo puedo exportar todos los subs en un paquete Perl?
- 26. ¿Cómo puedo generar todos los subconjuntos de una lista en Perl?
- 27. gmake compila todos los archivos en un directorio
- 28. Listar los archivos en un directorio y todos los subdirectorios
- 29. Git - Seguimiento automático de todos los archivos en un directorio
- 30. ¿Cómo puedo enumerar todos los archivos en un directorio ordenados alfabéticamente usando PHP?
Siempre olvido que readdir solo devuelve una lista de nombres de archivos relativos, ¡no la ruta completa! –
Gracias por desalentar el uso de globbing para esta tarea. Otro inconveniente del uso de globbing para esto es que no encontrará archivos ocultos (aquellos que comienzan con un punto). – josch