Solange Sie der Eigentümer der Datei (oder Root) sind, können Sie die Änderungszeit einer Datei mit dem folgenden touch
Befehl ändern :
touch filename
Standardmäßig wird die Änderungszeit der Datei auf die aktuelle Zeit eingestellt, es gibt jedoch eine Reihe von Flags, z. B. das -d
Flag zum Auswählen eines bestimmten Datums. Um beispielsweise eine Datei so einzustellen, dass sie zwei Stunden vor der Gegenwart geändert wurde, können Sie Folgendes verwenden:
touch -d "2 hours ago" filename
Wenn Sie die Datei stattdessen relativ zur vorhandenen Änderungszeit ändern möchten, sollten Sie Folgendes tun:
touch -d "$(date -R -r filename) - 2 hours" filename
Wenn Sie eine große Anzahl von Dateien ändern möchten, 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 ändern find
, um nur die Dateien auszuwählen, an denen Sie interessiert sind. Wenn Sie nur die Dateiänderungszeiten im Verhältnis zur aktuellen Zeit aktualisieren möchten, können Sie dies folgendermaßen vereinfachen:
find DIRECTORY -exec touch -d "2 hours ago" {} +
Dieses Formular ist mit der relativen Dateiversion nicht möglich, da es die Shell verwendet, um die Argumente für zu bilden touch
.
Die meisten Linux-Dateisysteme verfolgen diesen Wert im Hinblick auf die Erstellungszeit nicht. Es ist eine ctime
Datei zugeordnet, die jedoch nachverfolgt, wann die Dateimetadaten zuletzt geändert wurden. Wenn die Berechtigungen der Datei nie geändert wurden, wird möglicherweise die Erstellungszeit gespeichert, dies ist jedoch ein Zufall. Das explizite Ändern der Dateiänderungszeit gilt als Metadatenänderung und hat daher auch den Nebeneffekt, dass die Datei aktualisiert wird ctime
.
touch -d "2 hours ago" /path/*.txt
Zum Beispiel.ctime
in keiner Weise standardmässig möglich ist.ctime
zum Zeitpunkt der Metadatenänderung stammen von POSIX. Ich weiß nicht, ob die Shell-Fragmente in meiner Antwort mit strengen POSIX-Shell-Dienstprogrammen funktionieren würden. Aber sie arbeiten definitiv mit Ubuntu, dem Kontext für Antworten auf dieser Site.gtouch
über verwendenbrew install coreutils
.Danke für die Hilfe. Das hat bei mir funktioniert:
Gehen Sie im Terminal in das Verzeichnis, um das Datum zu bearbeiten. Dann tippe:
Sie werden ein ">" sehen, nachdem Sie die Eingabetaste gedrückt haben, außer zum letzten Mal -> "erledigt".
Hinweis: Möglicherweise möchten Sie "201203101513" ändern.
"201203101513" = ist das gewünschte Datum für alle Dateien in diesem Verzeichnis.
Siehe meine Webseite
quelle
.ss
wobei ss die Anzahl der Sekunden ist. (Hinweis: Dies scheint keine Subsekunden-Timings wie Nanosekunden oder Millisekunden zu steuern, die für mich nur als Nullen angezeigt wurden. Dieser Unterschied war jedoch für meinen Anwendungsfall zulässig.)Einfachster Weg - Zugriff und Änderung erfolgen auf die gleiche Weise:
Wo:
Wenn Sie verwenden möchten, lassen Sie
NOW
einfach den-t
und den Zeitstempel fallen.So überprüfen Sie, ob alle gleich sind:
stat fileName.ext
Siehe: Mensch berühren
quelle
touch
Flags führt zu einem korrekten Ergebnis. Das Änderungsdatum wurde angepasst, aber das Änderungs- und Zugriffsdatum wurde tatsächlich auf JETZT geändertchanged
Zeit und denmodified
Zeitstempeln?Touch kann auf das Datum einer Datei selbst verweisen, ohne dass eine
date
Befehlsersetzung aufgerufen oder verwendet werden muss. Hier ist ein bisschen von der Infoseite von touch:Um beispielsweise das Datum einer Datei um 8 Stunden zu verlängern (Dateiname in
file
Anführungszeichen nur bei Leerzeichen usw.):Verwenden einer Schleife über alle Dateien im aktuellen Verzeichnis:
Ich habe gehört , dass eine mit
*
und lassen Siefor
die Dateinamen wählen selbst ist sicherer , aber unter Verwendungfind -print0 | xargs -0 touch ...
sollte behandeln die meisten verrückten Charaktere wie Zeilenumbrüche, Leerzeichen, Anführungszeichen, Schrägstriche in einem Dateinamen. (PS. Versuchen Sie zunächst, keine verrückten Zeichen in Dateinamen zu verwenden).Um beispielsweise alle Dateien zu finden,
thatdir
deren Dateinamen mit einem beginnens
, und den geänderten Zeitstempel dieser Datei um einen Tag zu verlängern, verwenden Sie:quelle
Dieses kleine Skript funktioniert zumindest für mich
quelle
Es ist lange her, dass ich irgendeine Art von Unix-Programm geschrieben habe, aber ich habe versehentlich das Jahr auf einer Reihe von Weihnachtsfotos falsch eingestellt, und ich wusste, dass es später ein Problem sein würde, wenn ich das Datum von 2015 auf 2014 nicht ändern würde .
Vielleicht ist dies eine leichte Aufgabe, aber ich habe keinen einfachen Weg gefunden, dies zu tun.
Ich habe ein Skript geändert, das ich hier gefunden habe und das ursprünglich verwendet wurde, um das Datum um minus einen Monat zu ändern.
Hier ist das Original-Skript:
Hier ist mein modifiziertes Skript, das das Datum auf das Jahr "2014" zwang:
Mir ist jetzt klar, dass ich eine allgemeinere Version hätte machen können:
Um diese Datei zu verwenden, müssten Sie sie schreiben und
ausführen:
fn = Ihr-Dateiname-der-ist-Ihr-Befehl
Beispiel
ändert das Datum in dem Verzeichnis, in dem Sie sich befinden, um minus ein Jahr.
quelle
Ändern Sie einfach Datum und Uhrzeit in den Einstellungen. Speichern Sie dann Ihre Datei, es ändert sich automatisch
quelle