GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Mtime einer bestimmten Datei mit Bash abrufen?

stat kann Ihnen diese Informationen geben:

filemtime=$(stat -c %Y myfile.txt)

%Y gibt Ihnen die letzte Änderung als "Sekunden seit The Epoch", aber es gibt viele andere Optionen; Mehr Info. Wenn die Datei also am 22.01.2011 um 15:30 Uhr GMT geändert wurde, würde das Obige eine Zahl im Bereich von 1295710237 zurückgeben.

Bearbeiten :Ah, Sie wollen die Zeit in Tagen seit der Änderung. Das wird komplizierter, nicht zuletzt, weil ein "Tag" kein fester Zeitraum ist (einige "Tage" haben nur 23 Stunden, andere 25 – dank Sommerzeit).

Die Naiven Version könnte so aussehen:

filemtime=$(stat -c %Y "$1")
currtime=$(date +%s)
diff=$(( (currtime - filemtime) / 86400 ))
echo $diff

...aber noch einmal, das setzt voraus, dass ein Tag immer genau 86.400 Sekunden lang ist.

Mehr über Arithmetik in bash hier.


AGE=$(perl -e 'print -M $ARGV[0]' $file)

setzt $AGE auf das Alter von $file in Tagen, als Perls -M Operator verarbeitet den stat Anruf und die Umrechnung in Tage für Sie.

Der Rückgabewert ist ein Fließkommawert (z. B. 6,62849537 Tage). Fügen Sie eine int hinzu zum Ausdruck, wenn Sie ein Integer-Ergebnis benötigen

AGE=$(perl -e 'print int -M $ARGV[0]' $file)

Ruby und Python haben auch ihre Einzeiler, um eine Datei zu statisieren und einige Daten zurückzugeben, aber ich glaube, Perl hat den kürzesten Weg.


Das Datumsdienstprogramm hat einen bequemen Schalter zum Extrahieren der mtime aus einer Datei, die Sie dann mithilfe einer Formatzeichenfolge anzeigen oder speichern können.

date -r file "+%F"
# 2021-01-12
file_mtime=$(date -r file "+%F")

Siehe man date , wird die Ausgabe von date durch einen mit "+" beginnenden Formatstring gesteuert

Nützliche Formatzeichenfolgen zum Vergleichen vieler Datumsangaben könnten sein:

"+%j": day of year
"+%s": unix epoch time

Arithmetik mit Datumsangaben ist ein bisschen mühsam in Bash, wenn Sie also eine relative Zeit brauchen, die in allen Eckfällen funktioniert, sind Sie vielleicht mit einer anderen Sprache besser dran.


Linux
  1. So erhalten Sie eine bestimmte Speicheradresse mit C

  2. Wie schreibe ich mit Bash Integer in eine Binärdatei?

  3. Holen Sie sich das gestrige Datum in Bash unter Linux, DST-sicher

  4. Alle Ausgaben mit Bash unter Linux in eine Datei umleiten?

  5. Wie erhalte ich das absolute Verzeichnis einer Datei in Bash?

So erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit in Python

So ändern Sie den GNOME-Hintergrund automatisch in Intervallen mit BASH

Verwenden des Linux-Basisnamenbefehls in Bash-Skripten

Bash-Anfängerserie Nr. 5:Verwenden von arithmetischen Operatoren in Bash-Skripten

Holen Sie sich die Subnetzmaske in Linux mit Bash

Holen Sie sich das letzte Änderungsdatum der Datei in Linux