Zuallererst habe ich die gleiche Frage beim Stapelüberlauf gestellt, bin mir aber nicht sicher, ob sie dort drüben richtig ist. Deshalb habe ich mich entschieden, es auch hier zu posten.
Es fällt mir schwer, das Erstellungs- und Änderungsdatum einiger Dateien in andere Dateien zu kopieren.
Ich habe einige MXF-Dateien in MOV konvertiert, aber leider haben die neuen MOV-Dateien nicht das gleiche Erstellungsdatum.
Jetzt habe ich mich nach ähnlichen Fragen umgesehen und verschiedene Antworten gefunden, aber das scheint die einfachste zu sein:
#!/bin/bash
for f in *.MXF; do
touch -r "$f" "${f%MXF}mov"
done
Leider funktioniert es bei mir nicht – weder mit Terminal noch mit Automator.
Ich habe den Code mit TextEdit gespeichert. Im Terminal habe ich chmod+x ausgeführt, um die Datei ausführbar zu machen, und sie in den Ordner gelegt, in dem sich meine MXFs und MOVs befinden.
Aber ich bekomme nur die folgende Fehlermeldung:
touch: *.MXF: No such file or directory
Ich habe auch mxf statt MXF probiert.
Dies ist die Ausgabe von ls-l aus dem Testordner
-rwxrwxrwx 1 username staff 258458160 5 Jan 2014 570_0301.MXF
-rwxrwxrwx 1 username staff 241431870 5 Jan 2014 570_0301.mov
-rwxrwxrwx 1 username staff 974595120 5 Jan 2014 570_0306.MXF
-rwxrwxrwx 1 username staff 911745994 5 Jan 2014 570_0306.mov
-rwxrwxrwx 1 username staff 667679280 5 Jan 2014 570_0308.MXF
-rwxrwxrwx 1 username staff 624468526 5 Jan 2014 570_0308.mov
Da ich es geschafft habe, das Änderungsdatum zu kopieren, scheinen alle Dateien bereits dasselbe Datum zu haben, aber dies deckt nicht das Erstellungsdatum ab.
Vielleicht könnte mir jemand weiterhelfen? Wird es das Änderungs- und Erstellungsdatum ändern? Denn beides ist wichtig...
Vielen Dank im Voraus und alles Gute!
BEARBEITEN: Das Skript funktioniert dank user3439894.
Aber es aktualisiert immer noch nicht das Erstellungsdatum ...
MXF: erstellt am 05.01.2014 06:49, geändert am 05.01.2014 06:50
mov: erstellt am 23.06.2016 05:34, geändert am 05.01.2014 06:50
Gibt es eine Möglichkeit, dies zu korrigieren?
Da dies bei Ihnen nicht funktioniert, schlage ich vor, dass Sie wie von fd0 vorgeschlagen vorgehen und SetFile
. Dies wird in Verbindung mit verwendet GetFileInfo
, die beide Teil der Befehlszeilentools für Xcode sind.
Sie müssen die Xcode.app nicht installieren, die ~3,80 GB groß ist, nur ~160 MB für die Befehlszeilentools für Xcode.
Im Terminal:xcode-select --install
Siehe How to Install Command Line Tools in OS X Mavericks & Yosemite (Without Xcode) , das auch für OS X El Capitan gilt.
Hier ist ein Bash-Skript, das mit SetFile
und verwendet werden kann GetFileInfo
:
#!/bin/bash
for f in *; do
if [[ -f $f ]] && [[ ${f##*.} == MXF ]] && [[ -f ${f%.*}.mov ]]; then
cDate="$(GetFileInfo -d "$f")"
mDate="$(GetFileInfo -m "$f")"
SetFile -d "$cDate" -m "$mDate" "${f%.*}.mov"
fi
done
for f in *.MXF; do touch -r "$f" "${f%MXF}mov"; done
funktioniert gut für mich auf einem HFS + Dateisystem. Beides stat
und GetFileInfo
bestätigt, dass es für mich funktioniert, ohne SetFile
. Da es nicht funktioniert ist es einfacher für mich eine Lösung anzubieten SetFile
wie ich es in der Vergangenheit schon einige Male mit anderen Beiträgen gemacht habe.if
if [[ -f "$f" ]] && ...
.MXF
.mov
Wenn Sie nur das Änderungsdatum in das Erstellungsdatum derselben Dateien kopieren müssen, können Sie mein modifiziertes Skript verwenden:
#!/bin/bash
for f in *; do
cDate="$(GetFileInfo -d "$f")"
mDate="$(GetFileInfo -m "$f")"
SetFile -d "$mDate" "$f"
done
Benutzer3439894
ls -l
für das Zielverzeichnis ein. Fortsetzung im nächsten Kommentar...Benutzer3439894
$filename.MXF
und-$filename.mov
Dateien, die$filename
mit jedem Satz von.MXF
und-.mov
Dateien übereinstimmten, #1 als getestetfor f in *.MXF; do touch -r "$f" "${f%MXF}mov"; done
und es hat gut funktioniert! Also welches Problem hast du damit? Beachten Sie, dass die.MXF
Dateien nicht sein können.mxf
, da hier zwischen Groß- und Kleinschreibung unterschieden wird. Gleiches gilt für.mov
, es muss das sein und nicht.MOV
. (Deshalb habe ich gesagt, schließe die Ausgabe von ls -l für das Zielverzeichnis ein.)Phramenma
Benutzer3439894
.MXF
und enthält.mov
? Übrigens habe ich nicht gefragt, ob die Berechtigungen für alle Dateien gleich sind! Ich habe nach der Ausgabe vonls -l
für das Zielverzeichnis gefragt, damit ich die Namen der Dateien usw. tatsächlich sehen kann. Außerdem habe ich gesagt, dass Sie in dieser Frage viel zu viel los sind und sie auf einen Codeblock beschränken und Minimal bereitstellen sollen , vollständiges und überprüfbares Beispiel . Sie können unmöglich von uns Hilfe erwarten, wenn wir nicht alle relevanten Fakten haben!Phramenma
fd0
touch
Befehl arbeitet nur mit der Zugriffs- und Änderungszeit, die die Änderungszeit ändern sollte, nicht die Erstellungszeit.SetFile
ist das Werkzeug, das Sie verwenden müssen.Phramenma
Benutzer3439894
GetFileInfo -d $filename.mov
, das das Erstellungsdatum erhält, zeigt dasselbe für$filename.mov
nach dem Ausführenfor f in *.MXF; do touch -r "$f" "${f%MXF}mov"; done
wie für$filename.MXF
. Warum wird alsoSetFile
benötigt?fd0
touch -r
, ich habe das Handbuch gelesen, das falsch ist.Phramenma
Benutzer3439894
cd
in das Verzeichnis mit den.MXF
Dateien.mov
und und dann auf der Befehlszeile genau verwendet:for f in *.MXF; do touch -r "$f" "${f%MXF}mov"; done
Phramenma
Benutzer3439894
uname -a; bash --version
Phramenma