2009-07-30 4 views

Répondre

16

Vous pouvez obtenir la dernière heure de modification d'un fichier avec stat et la date actuelle avec date. Vous pouvez utiliser des chaînes de format pour les deux pour les obtenir en « secondes depuis l'époque »:

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

Ensuite, il est assez facile de mettre cela en état. Par exemple:

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

Pour les utilisateurs sur Solaris, notez cette date +% s ne fonctionne pas – Karl

+0

Comment largement pris en charge est 'stat -c% Y'? Sur OS X j'utiliserais 'stat -f% m', mais sur certaines versions de Linux' stat -f' affiche les informations du système de fichiers. La plupart des systèmes supportent 'date -r" $ fichier "+% s', mais pour être maladroit, ça ne marche pas sur OS X ... choses amusantes :) – Haravikk

3

La commande stat vous donnera la dernière modification du temps

stat -c %y <filename> 
4

La syntaxe de cette instruction if dépend de votre shell particulier, mais les commandes de date ne le font pas. J'utilise bash; modifier si nécessaire.

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 

Le +%s indique la date de sortie un temps UNIX (le bit important est qu'il est un entier en quelques secondes). Vous pouvez également utiliser stat pour obtenir cette information - la commande stat -c %Y <file> est équivalente. Assurez-vous d'utiliser %Y et non %y, de sorte que vous obtenez un temps utilisable en secondes.

0

Une modification d'horodatage de fichier n'implique pas vraiment que vous avez copié avec succès.
Si vous échouez à corrompre le fichier ou si le système de fichiers manque d'espace, vous verrez probablement encore un changement d'horodatage (besoin de le confirmer)
.

Je ne comprends pas le contexte exact de vos besoins.
Si vous déclenchez un cp, il se termine et retourne - ne retourne pas pendant qu'il fonctionne.
Ainsi, le retour (avec un code de sortie réussi) n'est-il pas un bon indicateur de succès?

Comment et pourquoi sortiriez-vous partiellement d'une opération cp?
Ou, est-ce un lot script qui boucle sur la liste des fichiers ...
une élaboration aiderait.

+0

le cp est fait dans un script et la vérification est faite dans un autre script. donc exister ne va pas arrêter cp au milieu. en passant, comment puis-je obtenir le vérifier le code existant de cp? merci – derrdji

+0

* obtenir et vérifier – derrdji

2

La fonction Find permet d'afficher le nom du fichier s'il a été modifié au cours des 3 dernières minutes.

find file1 -maxdepth 0 -mmin -3 
Questions connexes