2009-07-30 10 views

risposta

16

È possibile ottenere l'ora dell'ultima modifica di un file con stat e la data corrente con date. È possibile utilizzare stringhe di formato per entrambi per ottenere in "secondi dal l'epoca":

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

Poi, è abbastanza facile da mettere in una condizione. Ad esempio:

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

Per gli utenti di Solaris, si noti che date +% s non funziona – Karl

+0

Come ampiamente supportato è stat '-c% y'? Su OS X userei 'stat -f% m', ma su alcuni sapori di Linux' stat -f' mostra le informazioni sul filesystem. La maggior parte dei sistemi supporta 'date -r" $ file "+% s', ma per essere scomodo che non funziona su OS X ... roba divertente :) – Haravikk

3

Il comando stat vi darà il tempo dell'ultima modifica

stat -c %y <filename> 
4

La sintassi di questa istruzione if dipende dalla vostra shell particolare, ma i comandi di data non lo fanno. Io uso bash; modificare secondo necessità.

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 

Il +%s dice data di uscita per un tempo di UNIX (il bit importante è che si tratta di un intero in secondi). È anche possibile utilizzare stat per ottenere queste informazioni - il comando stat -c %Y <file> è equivalente. Assicurati di utilizzare %Y non %y, in modo da ottenere un tempo utile in secondi.

0

Una modifica del timestamp del file non implica in realtà che l'utente abbia copiato correttamente.
Se si finisce per danneggiare il file o il sistema di file esaurisce lo spazio,
probabilmente si vedrà ancora un cambiamento di data/ora (è necessario confermarlo).

Non capisco il contesto esatto del vostro requisito.
Se si attiva un cp, esso viene completato e restituito, non viene restituito mentre funziona.
Quindi, il ritorno (con codice di uscita riuscita) non è un buon indicatore del successo?

Come e perché uscire parzialmente dall'operazione cp?
Oppure, è uno script cp batch che scorre sull'elenco di file ...
alcune elaborazioni potrebbero aiutare.

+0

il cp è fatto in uno script e la verifica è fatta in un altro script. quindi esiste non si fermerà cp nel mezzo. a proposito, come posso ottenere la verifica del codice esistente di cp? grazie – derrdji

+0

* ottieni E verifica – derrdji

2

Trova può emettere il nome del file se è stato modificato negli ultimi 3 minuti.

find file1 -maxdepth 0 -mmin -3 
Problemi correlati