2016-05-27 25 views
0

Ich möchte meine ganze Familie Fotos und Filme organisieren. Ich habe einen Beispielcode, aber ich kann Zeichen in Dateiname nicht austauschen, die Befehle -tr oder -sed in BASH-Code und EXIFTOOL von Phil Harvey verwenden. Hat jemand eine Idee?BASH Umbenennen von Filmdateien mit EXIFTOOL als DATETIME-Format rekursiv [Jahr-Monat-Tag] [DayofWeek] [Stunden.Minuten.Sekunden] .extension

+0

Fragen Sie, wie man 'tr' und' sed' benutzt, um '$ newfilename' zu ​​ändern? ps ändern 'für i in * jpg * mov * jpeg * mpg; * avi * mp4 tun 'zu' für ich in * jpg * mov * jpeg * mpg * avi * mp4; mach es – webb

Antwort

1

Ein Skript ist dafür nicht notwendig, Exiftool kann es selbst machen.

Ihr Befehl würde wie folgt aussehen:
exiftool -ext jpg -ext mov -ext jpeg -ext mpg -ext avi -ext mp4 -d '[%Y-%m-%d][%A] [%H.%M.%S].%%e' '-Filename<MediaCreateDate' '-Filename<DateTimeOriginal' FileOrDir

Die -ext Option Limit welcher Datei extentions zu operieren.
Die Option -d und die darauf folgende Vorlage teilt Exiftool mit, welches Format für Datums-/Zeittyp-Tags zu verwenden ist. Weitere Informationen gefunden here
Die nächsten beiden Optionen sagen exiftool, dass die Datei entsprechend den angegebenen Tags (MediaCreateDate oder DateTimeOriginal) umbenannt wird. Frühere Optionen werden durch spätere Optionen überschrieben, daher wird DateTimeOriginal verwendet, falls vorhanden, andernfalls MediaCreateDate. Wenn keines der Elemente vorhanden ist, tritt ein geringfügiger Fehler auf und die Datei wird nicht umbenannt. Das Gleiche passiert, wenn eine Datei mit diesem Namen bereits existiert, aber %%c kann zu der Datumsformat-Zeichenkette hinzugefügt werden, um dem Dateinamen eine inkrementelle Nummer hinzuzufügen.

Hier ist eine Beispielausgabe, wo ich testname statt filename verwendet habe.

'X:/!temp/0615090217.jpg' --> 'X:/!temp/[2009-06-15][Monday] [02.17.00].jpg' 
'X:/!temp/2013-07-18_12.19.38 - Copy.Jpg' --> 'X:/!temp/[2013-07-18][Thursday] [12.19.38].Jpg' 
'X:/!temp/DSC_7689 after.JPG' --> 'X:/!temp/[2006-08-19][Saturday] [09.13.28].JPG' 
'X:/!temp/FujiFilmFinePixF200EXR_F0Standard (Provia).jpg' --> 'X:/!temp/[2009-01-25][Sunday] [14.10.46].jpg' 
'X:/!temp/FujiFilmFinePixS5Pro.jpg' --> 'X:/!temp/[2006-12-20][Wednesday] [07.20.58].jpg' 
'X:/!temp/IMGP0713-XL.jpg' --> 'X:/!temp/[2011-03-10][Thursday] [14.10.54].jpg' 
'X:/!temp/IMGP0852.jpg' --> 'X:/!temp/[2003-04-20][Sunday] [16.36.53].jpg' 
'X:/!temp/IMG_0938.JPG' --> 'X:/!temp/[2000-01-02][Sunday] [03.04.10].JPG' 
'X:/!temp/RCNX0001.JPG' --> 'X:/!temp/[2015-12-20][Sunday] [09.09.05].JPG' 
'X:/!temp/Test1.mp4' --> 'X:/!temp/[2015-12-25][Friday] [15.46.15].mp4' 
'X:/!temp/Test4.jpg' --> 'X:/!temp/[2010-07-05][Monday] [12.53.36].jpg' 
'X:/!temp/Test4.mp4' --> 'X:/!temp/[2014-11-11][Tuesday] [11.11.11].mp4' 
'X:/!temp/tif.jpg' --> 'X:/!temp/[2003-03-03][Monday] [03.03.03].jpg' 
'X:/!temp/xyzzy.jpg' --> 'X:/!temp/[2012-04-04][Wednesday] [04.04.04].jpg' 

Ich gehe davon aus, dass Sie Linux/Mac und nicht Windows verwenden. Unter Windows würden die einfachen Anführungszeichen in doppelte Anführungszeichen geändert. Fügen Sie -r hinzu, um zu rekrutieren.