Для этого не нужен сценарий, Exiftool может сделать это сам по себе.
Ваша команда будет выглядеть примерно так:
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
Предел -ext
вариант, что файл расширений для работы с.
Опция -d
и шаблон, который следует за ней, сообщает Exiftool, какой формат использовать для тегов типа даты/времени. Более подробная информация найдена here
Следующие два варианта говорят exiftool, что файл будет переименован в соответствии с указанными тегами (MediaCreateDate или DateTimeOriginal). Более ранние параметры переопределяются более поздними опциями, поэтому DateTimeOriginal будет использоваться, если он существует, иначе MediaCreateDate. Если ни один из элементов не существует, произойдет незначительная ошибка, и файл не будет переименован. То же самое произойдет, если файл с таким именем уже существует, но %%c
можно добавить в строку формата даты, чтобы добавить инкрементный номер в имя файла.
Вот пример вывода, где я использовал testname
вместо filename
.
'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'
Я предполагаю, что вы используете Linux/Mac, а не Windows. В Windows одиночные кавычки будут заменены на двойные кавычки. Добавить -r
для рекурсии.
Вы спрашиваете, как использовать 'tr' и' sed' для изменения '$ newfilename'? ps change 'for i in * jpg * mov * jpeg * mpg; * avi * mp4 do' to 'for i in * jpg * mov * jpeg * mpg * avi * mp4; do' – webb