2014-11-17 1 views
-2

У меня проблема. Я хочу написать сценарий bash для переименования фотографий в разных папках. У вас есть совет?Сценарий для переименования фотографий с exif

вход является:

  • DSC3201.jpg
  • DSC3202.jpg
  • DSC3202-1.jpg
  • ЕСС

Выход я хочу это:

  • 20141102_123259.jpg
  • 20141102_124502.jpg
  • 20141102_124502 ​​(1) .jpg
  • ЕСС

Формат вывода является: yearmounthday_hourminuteseconds.ext и когда есть фото модифицирована (я поставил -1 в последняя часть имени) Я хочу инкрементное число (1) или (2) ecc ...

Извините за мой плохой английский, но я надеюсь, что вы понимаете мой вопрос. Большое спасибо :))

Редактировать: Спасибо за ответ !! Я сделал это:

#!/bin/bash 

declare dir_photo=$(ls $PWR | grep .jpg) 

for N in $dir_photo do exiftool -d %Y%m%d_%H%M%S $N | awk -F': ' '/File Modification Date/{print $2}' done 

Но если я хочу создать время, а не время модификации, что мне нужно изменить?

Редактировать 2: Извините, скрипт работает как шарм! Большое спасибо!!!

ответ

0

Решение получить дату с форматом:

$ exiftool -d %Y%m%d_%H%M%S image.png | 
    awk -F': ' '/File Modification Date/{print $2}' 

Выход:

20140429_110955 

Начало начала сценарий!

#!/bin/bash 

dir_photo=(*.jpg) 

for N in ${dir_photo[@]}; do 
    date_str=$(
     exiftool -d %Y%m%d_%H%M%S $N | 
     awk -F': ' '/File Modification Date/{print $2}' 
    ) 
    print "$N $date_str" 
done 
0

Спасибо всем. К "Потомство будет": D Я понимаю, что есть 2 пути решения проблемы:

С ExifTool:

#!/bin/bash 

dir_photo=(*.jpg) 

for N in ${dir_photo[@]}; do 
    date_str=$(
     exiftool -d %Y%m%d_%H%M%S $N | 
     awk -F': ' '/File Modification Date/{print $2}' 
    ) 
    print "$N $date_str" 
done 

Или с jhead:

jhead -n%Y%m%d_%H%M%S *.jpg 

Выбрать что вы предпочитаете;)

 Смежные вопросы

  • Нет связанных вопросов^_^