Mar Ago 08, 2006 2:58 pm
|
 |
felipe
Perlero Nuevo

|
Registrado: 08 Ago 2006
Mensajes: 1
|
|
| Obtener fecha modificación de un archivo en Linux |
|
|
Estoy necesitando obtener solamente el año de modificación de un archivo y no lo estoy logrando.
Entre las varias cosas que estuve probando son:
| Código: |
#!/usr/bin/perl -w
use Time::localtime;
use File::stat;
@mensajes_log=`find /var/log -name messages -prune -type f` or die ("No encontramos el archivo MESSAGES :-( ... verificar!!!");
print "$mensajes_log[0]";
chomp ($mensajes_log[0]);
$modificacion_messagges[0] = ctime(stat($mensajes_log[0])->mtime);
print "La fecha de modificacion del archivos messages es: modificacion_messagges[0] \n";
@dividiendo_fecha = split (/\s/,$modificacion_messages[0]);
@anho = $dividiendo_fecha[4];
print "El año de modificación de archivos messages es: $anho[0] \n"; |
Gracias por cualquier ayuda.... |
|
|
|

Mar Ago 08, 2006 3:27 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4082
Ubicación: Valladolid, España
|
|
|
|
|
La respuesta está escrita en el perlfaq5 (http://perldoc.perl.org/perlfaq5.html#How-do-I-get-a-file's-timestamp-in-perl%3f-timestamp-file%2c-timestamp).
En resumen:
* Depende de la plataforma que estés usando, es decir, el sistema operativo. Leer perlpot para los detalles.
* Las funciones -A, -M y -C devuelven la fecha del fichero con respecto al momento en que se arrancó el programa. Ver perlfunc.
* Para recuperar la fecha del fichero con respecto al epoch se usa stat y para pasar ese tiempo a algo más humano, se usa localtime, gmtime o strftime.
En tu caso, para sacar el año de modificación del fichero, se podría hacer:
| Código: |
#!/usr/bin/perl -l
$fichero = '/var/log/messages';
$tiempo = (stat( $fichero ))[9]; # Tiempo de modificación en segundos desde epoch
$year = (localtime $tiempo)[5] + 1900;
print $year; # 2006 |
Y sin usar ningún módulo extra. Se puede usar File::stat para acceder de forma más cómoda a los valores de stat() y Time::localtime para no tener que acordarnos que el año está en sexto lugar del localtime...
| Código: |
#!/usr/bin/perl -l
use Time::localtime;
use File::stat;
$fichero = '/var/log/messages';
$year = localtime(stat($fichero)->mtime)->year()+1900;
print $year; # 2006 |
|
|

Powered by phpBB © 2001, 2005 phpBB Group
|