Sab Ago 09, 2008 5:51 pm
|
 |
lis
Perlero Nuevo

|
Registrado: 27 May 2008
Mensajes: 27
|
|
| Guardar nombres de los archivos |
|
|
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. |
|
|
|

Sab Ago 09, 2008 9:33 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4102
Ubicación: Valladolid, España
|
|
|
|
|
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. |
|

Powered by phpBB © 2001, 2005 phpBB Group
|