Gibt es eine Möglichkeit, das Datum zu ändern, an dem eine Datei geändert/erstellt wurde (das in Nautilus oder mit dem Befehl ls -l angezeigt wird)? Idealerweise suche ich nach einem Befehl, der die Datums-/Zeitstempel einer ganzen Reihe von Dateien um eine bestimmte Zeitspanne früher oder später ändern kann (z.B. +8 Stunden oder -4 Tage usw.).
Solange Sie der Eigentümer der Datei (oder root) sind, können Sie die Änderungszeit einer Datei mit dem Befehl touch
ändern:
touch filename
Standardmäßig wird die Änderungszeit der Datei auf die aktuelle Zeit gesetzt, aber es gibt eine Reihe von Flags, wie z.B. das -d
Flag, um ein bestimmtes Datum zu wählen. Um zum Beispiel eine Datei so zu setzen, dass sie zwei Stunden vor der Gegenwart geändert wurde, könnten Sie folgendes verwenden:
touch -d "2 hours ago" filename
Wenn Sie die Datei stattdessen relativ zu ihrer bestehenden Änderungszeit ändern wollen, sollte das Folgende den Trick erfüllen:
touch -d "$(date -R -r filename) - 2 hours" filename
Wenn Sie eine große Anzahl von Dateien ändern wollen, können Sie Folgendes verwenden:
find DIRECTORY -print | while read filename; do
# do whatever you want with the file
touch -d "$(date -R -r "$filename") - 2 hours" "$filename"
done
Sie können die Argumente in find
ändern, um nur die Dateien auszuwählen, an denen Sie interessiert sind. Wenn Sie nur die Datei-Änderungszeiten relativ zur aktuellen Zeit aktualisieren wollen, können Sie dies vereinfachen:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Diese Form ist bei der relativen Version der Datei-Änderungszeiten nicht möglich, da die Argumente für touch
von der Shell gebildet werden.
Was den Erstellungszeitpunkt angeht, so führen die meisten Linux-Dateisysteme keinen Überblick über diesen Wert. Es gibt eine ctime
, die mit Dateien verbunden ist, aber sie verfolgt, wann die Metadaten der Datei zuletzt geändert wurden. Wenn die Berechtigungen der Datei nie geändert werden, kann es passieren, dass sie die Erstellungszeit enthält, aber das ist ein Zufall. Das explizite Ändern der Dateiänderungszeit zählt als eine Metadatenänderung und hat daher auch den Nebeneffekt, dass die ctime
aktualisiert wird.
Vielen Dank für die Hilfe. Das hat bei mir funktioniert:
Gehen Sie im Terminal in das Verzeichnis für date-edit. Dann geben Sie ein:
find -print | while read filename; do
# do whatever you want with the file
touch -t 201203101513 "$filename"
done
Nachdem Sie die Eingabetaste gedrückt haben, wird ein ">" angezeigt, außer beim letzten Mal -> "done".
Anmerkung: Vielleicht möchten Sie "201203101513" ändern;
"201203101513" = ist das Datum, das Sie für alle Dateien in diesem Verzeichnis wünschen.
Ändern Sie einfach das Datum und die Uhrzeit in den Einstellungen und speichern Sie die Datei, dann wird sie automatisch geändert.