2009-07-30 12 views

Respuesta

16

Puede obtener la hora de la última modificación de un archivo con stat, y la fecha actual con date. Puede utilizar las cadenas de formato, tanto para conseguir que en "segundos desde la época":

current=`date +%s` 
last_modified=`stat -c "%Y" $file` 

Entonces, es bastante fácil de poner esto en una condición. Por ejemplo:

if [ $(($current-$last_modified)) -gt 180 ]; then 
    echo "old"; 
else 
    echo "new"; 
fi 
+0

Para los usuarios en Solaris, tenga en cuenta que la fecha +% s no funciona – Karl

+0

Cómo amplio apoyo es 'stat -c% y'? En OS X usaría 'stat -f% m', pero en algunos sabores de Linux' stat -f' muestra información del sistema de archivos. La mayoría de los sistemas admiten 'date -r" $ file "+% s', pero es incómodo que no funciona en OS X ... cosas divertidas :) – Haravikk

3

El comando stat le dará el tiempo de la última modificación

stat -c %y <filename> 
4

La sintaxis de esta sentencia if depende de su concha en particular, pero los comandos fecha no lo hacen. Yo uso bash; modificar según sea necesario.

if [ $(($(date +%s) - $(date +%s -r <file>))) -le 180 ]; then 
    # was modified in last three minutes 
else 
    # was not modified in last three minutes 
fi 

El +%s dice la fecha de salida a la vez UNIX (la parte importante es que es un número entero en segundos). También puede usar stat para obtener esta información: el comando stat -c %Y <file> es equivalente. Asegúrese de utilizar %Y no %y, para que pueda obtener un tiempo utilizable en segundos.

0

Un cambio en la fecha y hora del archivo en realidad no implica que haya copiado correctamente.
Si cae en la corrupción del archivo o el sistema de archivos se queda sin espacio,
, es probable que aún vea un cambio en la marca de tiempo (debe confirmarlo).

No entiendo el contexto exacto de su requerimiento.
Si activa un cp, se completa y se devuelve; no se devuelve mientras está funcionando.
Entonces, ¿no es la devolución (con el código de salida de éxito) un buen indicador de éxito?

¿Cómo y por qué saldría en parte dentro de una operación cp?
O, ¿es eso una secuencia de comandos de lote cp que recorre la lista de archivos ...
alguna elaboración ayudaría.

+0

la cp se realiza en una secuencia de comandos y la verificación se realiza en otra secuencia de comandos. así que existir no parará cp en el medio. por cierto, ¿cómo puedo obtener la verificación del código de cp existente? gracias – derrdji

+0

* obtener Y verificar – derrdji

2

Find puede mostrar el nombre del archivo si se ha modificado en los últimos 3 minutos.

find file1 -maxdepth 0 -mmin -3 
Cuestiones relacionadas