What I don't like in this renaming method is the colons used in EXIF date and time stamps (e.g. "2013:09:03 20:55:09_IMG_0108.JPG") which might create problems when transferring these files later to other environments (e.g. Windows).
Você pode executar o esquema de nomenclatura por meio de sed
, para substituir os dois-pontos por traços e espaços com sublinhados, da seguinte forma:
mv -i "$i" "$(exiftool -CreateDate "$i" | awk -F ': ' '{print $2}' | sed -e 's/:/-/g' -e 's/ /_/g')_$i"
Quanto a tornar a coisa toda minúscula, você pode usar rename
:
rename 's/(.*)/\L$1/' file.JPG
## or
rename 's/(.*)/\L$1/' *.*
Ou você pode fazer isso em seu script usando sed
, como em:
j=$(echo "$i" | sed -e 's/\(.*\)/\L/')
... e, em seguida, use a variável $j
no lugar da% final$i
da sua linha mv
. Este modo sed é um pouco mais portátil (se isso é importante para você), já que diferentes distribuições de Linux têm diferentes comandos de renomeação, enquanto o sed é universal.
Ou, como alternativa, o script pode ser modificado da seguinte forma para realizar a conversão de nomes de arquivo em letras minúsculas no início usando tr
:
for arg
do
tmp="$(echo "$arg" | tr '[A-Z]' '[a-z]')"
mv -i "$arg" "$(exiftool -CreateDate "$arg" | awk -F ': ' '{print $2}' | sed -e 's/:/-/g' -e 's/ /_/g')_$tmp"
done
Para executar comandos ligeiramente diferentes para diferentes tipos de arquivo, uma instrução de caso bash pode ser usada neste script. Por exemplo:
#! /usr/bin/env bash
for filename in ./*
do
tmp="$(echo "$filename" | tr '[A-Z]' '[a-z]')"
case "$filename" in
*.MOV|*.mov)
mv -i "$filename" "$(exiftool -a -s -CreateDate-tur "$filename" | awk -F ': ' '{print $2}' | sed -e 's/\-[0-9][0-9]\:00//g' -e 's/\+[0-9][0-9]\:00//g' -e 's/:/-/g' -e 's/ /_/g')_$tmp"
;;
*.JPG|*.jpg)
mv -i "$filename" "$(exiftool -a -s -CreateDate "$filename" | awk -F ': ' '{print $2}' | sed -e 's/:/-/g' -e 's/ /_/g')_"$tmp""
;;
*)
echo 'Not a *.jpg or a *.mov!'
;;
esac
done
Neste exemplo, a renomeação de arquivos MOV que possuem carimbos de data e hora CreateDate QUALQUER NÚMERO de horas APÓS OU ANTES de arquivos JPG é ajustada usando outros dados EXIF (-tur) e removendo esse sufixo de diferença de horário, e pode ser necessário alterar a parte -tur de acordo com a localização definida no sistema.