Wie überprüfe ich in bash, ob eine Datei vor mehr als einer Zeit erstellt wurde?
Möchte ich überprüfen, in linux bash, ob eine Datei erstellt wurde, mehr als x-mal gemeldet.
sagen wir die Datei heißt text.txt und die Zeit ist 2 Stunden.
if [ what? ]
then
echo "old enough"
fi
InformationsquelleAutor der Frage flybywire | 2009-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur für die änderung der Zeit
Oder der gleichen in einer Zeile:
Können Sie
-cmin
für die änderung oder-amin
für den Zugang Zeit. Wie andere wies ich nicht glaube, können Sie verfolgen, Zeitpunkt der Erstellung.InformationsquelleAutor der Antwort kmkaplan
Mochte ich immer mit
date -r /the/file +%s
zu finden sein Alter.Können Sie auch tun
touch --date '2015-10-10 9:55' /tmp/file
zu bekommen extrem feinkörnige Zeit an einem beliebigen Datum/Uhrzeit.InformationsquelleAutor der Antwort nemik
Zeitpunkt der Erstellung nicht gespeichert.
Was gespeichert werden, sind drei Zeitstempel (in der Regel, Sie kann deaktiviert werden, auf bestimmte Dateisysteme oder durch bestimmte Dateisystem-Optionen):
einen "Ändern", um die Datei wird gezählt, wie Berechtigungsänderungen, umbenennen etc. Während der änderung wird der Inhalt nur.
InformationsquelleAutor der Antwort Philip Reynolds
Mithilfe der
stat
um herauszufinden, das Datum der letzten änderung der Datei,date
um herauszufinden, die aktuelle Zeit und eine liberale Verwendung von bashisms, kann man den test machen, den Sie wollen, basiert auf der Datei, Letzte änderung Zeit1.Während der code ist etwas weniger lesbar, dann ist die
find
Ansatz, ich denke, der bessere Ansatz ist, dann läuftfind
zu betrachten, eine Datei, die du bereits "gefunden". Auch die manipulation von Datum ist Spaß 😉%Z
statt%Y
unten, um "ändern Zeit" - was kann das sein, was Sie wollen.[Update]
Für mac-Benutzer, die Verwendung
stat -f "%m" $somefile
statt dem Linux-spezifische syntax obenInformationsquelleAutor der Antwort Guss
Obwohl ctime nicht technisch die Zeit der Schöpfung, ist es ganz oft der Fall ist.
Seit ctime es ist nicht von änderungen betroffen sind, um den Inhalt der Datei, sondern in der Regel nur aktualisiert, wenn die Datei erstellt wird. Und ja - ich höre Sie alle Schreien - es ist auch dann aktualisiert, wenn Sie ändern Sie die Zugriffsberechtigungen oder Eigentum... aber generell ist das etwas, das einmal getan, in der Regel in der gleichen Zeit, setzen Sie die Datei dort.
Persönlich verwende ich immer mtime für alles, und ich denke, dass ist das, was Sie wollen. Aber egal... hier ist eine Neuauflage der Guss ist "unattraktiv" bash", eine einfach zu bedienende Funktion.
InformationsquelleAutor der Antwort Maryam Jeddian
Das finden, ist gut, aber ich denke, dass Sie verwenden können, anotherway, vor allem, wenn Sie brauchen, um jetzt, wie viele Sekunden ist die Datei alt
date -d "now - $( stat -c "%Y" $filename ) seconds" +%s
mit GNU date
InformationsquelleAutor der Antwort Vide
Betrachten Sie das Ergebnis des tool 'stat':
Sehen Sie hier die drei Termine für Access/modify/ändern. Es gibt keine
erstellt Datum, an. Sie können nur dann wirklich sicher, wenn Sie den Inhalt der Datei waren
geändert ("ändern" - Feld) oder die inode geändert ("ändern"
Feld).
Beispiele, wenn beide Felder aktualisiert:
"Ändern" aktualisiert wird, wenn jemand verkettet zusätzliche Informationen
am Ende der Datei.
"Änderung" wird aktualisiert, wenn sich jemand verändert die Rechte über chmod.
InformationsquelleAutor der Antwort fdr