2013-02-10 6 views
31

pracuję na małej skrzynki referencyjnej podobny skrypt bash, jak mogę porównać daty 2 pliki i zastąpić starą (ów) z nową bez użycia rsync jest jakiś prosty sposób na przetworzenie tego? Czy mogę SHA1 pomóc mi poznać nowszą?porównać datę bash pliku na

+0

To naprawdę zależy od tego, co rozumiesz przez "datę pliku". Prawdopodobnie odnosisz się do 'mtime', ale specyfika jest dobra. –

+0

@WilliamPursell, ostatni modyfikator to znaczy –

Odpowiedz

72

można porównać czasy modyfikacji plików z test korzystając -nt (nowsze niż) i -ot (starsze niż) Operatorzy:

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

To niesamowite :))) nigdy nie myślał, że proste porównanie może zrobić pracę, ponieważ jestem nowy w centOS :) dziękuję u :) –

+0

-nt wydaje się oznaczać nowszych niż w tym samym wieku. –

+0

@ JoeC Testowałem i jeśli ten sam wiek wrócił 1 (po 'touch -r ...') –

2

jak o

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

Ten pomógł mi z tym, co próbowałem osiągnąć. Teraz, jak porównać te czasy? Używam odpowiedzi znalezionych tutaj: http://stackoverflow.com/questions/8116503/how-to-compare-two-datetime-strings-and-return-difference-in-hs-bash-shell Perfect! – harperville

2

Albo nawet krótsze i ładniejsze, wygląd pod adresem man stat:

stat -c %y file 
4

Oto rozwiązanie POSIX:

find -name file2 -newer file1