Hallo, ich suche unter macOS 11.6 nach einem Befehl, um die Zugriffszeit von der Quelldatei in die Zieldatei zu kopieren.
Die Quelldatei der Zugriffszeit darf nicht aktualisiert werden.
Noch einfacher!
touch -a -r sourcefile destinationfile
Dies ändert nur die Zugriffszeit, während mein anderes Beispiel sowohl die Zugriffs- als auch die Änderungszeit am Ziel geändert hat. Siehe man touch
für Details.
Hinweis : Unter macOS 11.6, 10.14 (und wahrscheinlich früher), wenn die berührte Datei eine Länge ungleich Null hat und sich in einem von Spotlight indizierten Ordner befindet, aktualisiert Spotlight die Zugriffszeit auf die aktuelle Zeit, kurz nachdem die Zugriffszeit festgelegt wurde. Einstellungen/Spotlight/Datenschutz können verwendet werden, um Ordner von der Spotlight-Indizierung auszuschließen.
Dieses Skript sollte den Zweck erfüllen:
#!/bin/sh
if [ $# -ne 2 ]; then
echo "Usage: $(basename $0) source destination"
exit 1
fi
FMT="%Y%m%d%H%M.%S"
atime=$(stat -f %Sa -t "$FMT" "$1")
if [ -n "$atime" ]; then
touch -t "$atime" "$2"
fi
Es kopiert die Zugriffszeit mit stat und schreibt mit touch.
Der Befehl
cp -p source destination
wird die Arbeit erledigen.
Aus Manpages:
-p Bewirkt, dass cp die folgenden Attribute jeder Quelldatei in der Kopie beibehält: Änderungszeit, Zugriffszeit, Datei-Flags, Dateimodus, Benutzer-ID und Gruppen-ID, wie von den Berechtigungen erlaubt. Access Control Lists (ACLs) und Extended Attributes (EAs), einschließlich Resource Forks, bleiben ebenfalls erhalten.
David Anderson
-a
Option verwenden, wie intouch -a -t "$atime" "$2"
. Auch der Hinweis in MichaelRs anderer Antwort sollte für diese Antwort gelten.