2013-02-10 13 views
31

je travaille sur un petit script bash dropbox-like, comment puis-je comparer les dates de 2 fichiers et remplacer l'ancien (s) avec le nouveau sans utiliser rsync est-il moyen simple de traiter cela? le SHA1 peut-il m'aider à connaître le plus récent?comparer la date de fichier bash

+0

Cela dépend vraiment de ce que vous entendez par "date d'un fichier". Vous faites probablement référence à 'mtime', mais la spécificité est bonne. –

+0

@WilliamPursell, le dernier changement que je veux dire –

Répondre

72

Vous pouvez comparer les temps de modification de fichier avec test, en utilisant -nt (plus récent que) et -ot (de plus) les opérateurs:

if [ "$file1" -ot "$file2" ]; then 
    cp -f "$file2" "$file1" 
fi 
+5

c'est génial :))) n'a jamais pensé que la comparaison simple pourrait faire le travail depuis que je suis nouveau à centOS :) merci u :) –

+0

-nt semble signifier plus récent ou même âge. –

+0

@JoeC J'ai testé et si même âge retourné 1 (après 'touch -r ...') –

2

que diriez-vous

stat file|awk -F': ' '/Modify: /{print $2}' 
+0

Celui-ci m'a aidé avec ce que j'essayais d'accomplir. Maintenant, comment comparer ces moments? J'utilise les réponses trouvées ici: http://stackoverflow.com/questions/8116503/how-to-compare-two-datetime-strings-and-return-difference-in-hours-bash-shell Parfait! – harperville

2

Ou encore plus courte et plus agréable, regarder au man stat:

stat -c %y file 
4

Voici une solution POSIX:

find -name file2 -newer file1