Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Guardar nombres de los archivos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Sab Ago 09, 2008 5:51 pm
lis
Perlero Nuevo
Perlero Nuevo
Registrado: 27 May 2008
Mensajes: 29
Guardar nombres de los archivos Responder citando

Hola a todos: tengo una carpeta que contiene los siguientes "n" archivos con extensión .dat. Lo que quiero hacer es solo tomar los nombres de esos "n" archivos y guardarlos en uno nuevo archiv.dat. Por ejemplo, tengo los archivos que se llaman así 20050101.dat hasta 20050131.dat (que son añomesdia.dat), y quiero guardar sus nombres así:

Código:
20050101.dat
20050102.dat
20050103.dat
       .
       .
       .
       .
20050131.dat


Algunos de uds. dirán por qué mejor no hago un ciclo for indicándole de dónde empieza hasta donde termina, pero el problema es que tengo 1095 archivos .dat y no todas las fechas están, y para buscarlas sería algo tedioso y complicado.

Les agradezco cualquier ayuda.
Mensaje Sab Ago 09, 2008 9:33 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4142
Ubicación: Valladolid, España
Responder citando

Bueno, una solución sería esta (no probada):

Perl:
#!/usr/bin/perl
use strict;
use warnings;

my @ficheros = <2005*.dat>;

open  SALIDA, '>archiv.dat' or die "No puedo escribir: $!\n";
print SALIDA join "\n", @ficheros, '';
close SALIDA;


En cuanto a hacer un bucle entre dos fechas, sí que se puede hacer: saltamos aquellos ficheros que no están (no probado):

Perl:
#!/usr/bin/perl
use strict;
use warnings;

open SALIDA, '>archiv.dat' or die "No puedo escribir: $!\n";
for my $fecha ( 20050101 .. 20071231 ) {
    my $fichero = "$fecha.dat";
    next if !-e $fichero;       # saltamos al siguiente si no existe el fichero
    print SALIDA "$fichero\n"# si sí existe, lo añadimos a la lista
}
close SALIDA;

Bueno, es un poco bruto recorrer miles de ficheros que sabemos que no existen... pero es la ventaja de tener las fechas bien puestas (año, mes, día), en su orden correcto... las podemos tratar como números enteros. Y además, hoy en día tenemos ordenadores muy rápidos, para saltar las fechas de los ficheros que no existen.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group