Foros del Web » Programación para mayores de 30 ;) » Programación General »

Script para obtener fecha

Estas en el tema de Script para obtener fecha en el foro de Programación General en Foros del Web. Buenos días; Llevo muy poco tiempo programando y pongo aquí mi problema a ver si alguien puede echarme una mano. Mi objetivo es obtener de ...
  #1 (permalink)  
Antiguo 01/02/2010, 05:22
 
Fecha de Ingreso: agosto-2008
Mensajes: 27
Antigüedad: 15 años, 8 meses
Puntos: 0
Script para obtener fecha

Buenos días;


Llevo muy poco tiempo programando y pongo aquí mi problema a ver si alguien puede echarme una mano.

Mi objetivo es obtener de un directorio por ejemplo /var/tmp/Raul la fecha y hora del último fichero modificado, es decir si dentro del directorio hay 100 ficheros, quiero obtener la fecha y hora de modificación del último fichero que ha sido modificado.

No sé si será más fácil hacerlo en ksh o perl.

Agradecería vuestra ayuda.

Muchas gracias.

Un saludo
  #2 (permalink)  
Antiguo 11/04/2010, 01:31
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Script para obtener fecha

Mucho más fácil en ksh, pero ahí va:

Código Perl:
Ver original
  1. if (opendir(my $handle, '.')){
  2.      my @last = (0,'');
  3.      while ($file = readdir($handle)) {
  4.          $_ = (stat($file))[9];
  5.          if ($_ > $last[0]) {
  6.               @last = ($_,$file);
  7.          }
  8.      }
  9.      print "${last[1]} modificado: ".scalar localtime($last[0]);
  10.      closedir $handle;
  11. }
  #3 (permalink)  
Antiguo 13/04/2010, 19:09
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Script para obtener fecha

Cita:
Iniciado por jferrero Ver Mensaje
Sí, es cierto lo que dice abcdefghi, con ksh es más fácil, pero no mucho más que con Perl.

Otra forma de hacerlo:
Código Perl:
Ver original
  1. perl -le 'print scalar localtime +(stat((sort{-M$a<=>-M$b}<*>)[0]))[9]'
Primero, sacamos el listado de ficheros del directorio actual, con <*>.
Para cada uno de ellos, los ordenamos (sort), numéricamente (<=>) según su fecha de modificación (-M).
Nos quedamos con el primero de todos ([0]), porque será el fichero con la última modificación.
De él, obtenemos su estado (stat), del que nos quedamos con su décimo parámetro ([9]) que es la fecha de modificación.
Esa fecha, que está en formato epoch, la pasamos a localtime() para saber la fecha en formato humano.
Si localtime() lo ejecutamos en contexto escalar (scalar), pues entonces nos devuelve una cadena de texto con la fecha y hora de forma más presentable. Por ejemplo:

Wed Apr 7 19:10:33 2010

Estas son otras (su funcionamiento se deja como ejercicio para el lector):
Código Perl:
Ver original
  1. perl -le '$_=(qx(ls -1rt))[-1]; chomp; print scalar localtime((stat)[9])'
Código Perl:
Ver original
  1. perl -le '$_=join" ",(split" ",(qx(ls --full-time -rt))[-1])[5,6];print'
Nnnnnnnnnnoooooooooooooooooooooooooo me dejaste como un newbie, veo lo mio y lo tuyo y me da ganas de eliminar el post completo, vale la escusa de que hace mucho que no toco Perl y se me olvido la regla no escrita número 1, siempre escribe el código más corto/ofuscado, pero extrañamente claro posible, sino otro te avergonzara totalmente.

Bueno andá avisandole a Kidd que levante la olvidada sección de Perl golf que prometo dar batalla.

Esto no quedará así!!

Saludos.
  #4 (permalink)  
Antiguo 14/04/2010, 02:22
Colaborador
 
Fecha de Ingreso: mayo-2006
Ubicación: Valladolid
Mensajes: 524
Antigüedad: 18 años
Puntos: 11
Respuesta: Script para obtener fecha

Hummm... después de ver con calma tu código y el mío... creo que el que tiene que borrar el mensaje soy yo: no aporta nada más que confusión. Los perl one line son solo para casos extremos.

Lo siento.
__________________
JF^D Perl Programming en Español
  #5 (permalink)  
Antiguo 14/04/2010, 15:45
 
Fecha de Ingreso: enero-2010
Mensajes: 191
Antigüedad: 14 años, 3 meses
Puntos: 7
Respuesta: Script para obtener fecha

Por el contrario, no conozco un sólo topic de Perl en que los particiantes no exponga soluciones una más sintetizada que la otra, en las respuesta lo que se transmite es el conocimiento y el ingenio, el que inició el post eligirá la más conveniente.

De todas maneras fué mi error porque es un post viejo, seguramente el muchacho lo debe de haber solucionado.

Saludos.

Etiquetas: fechas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:44.