A menudo importo fotos y videos (en su mayoría con extensiones JPG y MOV) de cámaras digitales y tabletas a mi PC, y me gustaría verlos ordenados según las fechas y horas en que se tomaron ya presentes en sus datos EXIF. Y, por lo tanto, deseo cambiarles el nombre a todos, preferiblemente usando una secuencia de comandos simple de Nautilus insertando preferiblemente las marcas de fecha y hora antes de cada nombre de archivo.
Hasta ahora solo he logrado reunir el siguiente Nautilus Script, que creo que está lejos de ser perfecto:
for i in *.*
do
mv -i "$i" "$(exiftool -CreateDate "$i" | awk -F ': ' '{print $2}')_"$i""
done
Lo que no me gusta en este método de cambio de nombre son los dos puntos utilizados en las marcas de fecha y hora EXIF (por ejemplo, "2013: 09: 03 20: 55: 09_IMG_0108.JPG") que pueden crear problemas al transferir estos archivos más tarde a otros entornos ( por ejemplo, Windows).
Este comando (usando exiv2 en lugar de exiftool ) permite convenientemente la manipulación de marcas de fecha y hora, pero su inconveniente es que no funciona en archivos de video (por ejemplo, MOV) :
exiv2 -k -r '%Y-%m-%d_%H-%M-%S_:basename:' rename "$i"
Así que espero que alguien pueda encontrar una mejor solución. ¡Y sería mágico si incluso lograra convertir los nombres de archivo originales y las extensiones a minúsculas también!
Respuestas:
Puede ejecutar el esquema de nomenclatura
sed
para reemplazar los dos puntos con guiones y espacios con guiones bajos, de esta manera:En cuanto a hacer todo en minúsculas, puede usar
rename
:O puede hacerlo dentro de su script usando
sed
, como en:... y luego usa la
$j
variable en lugar del final$i
de tumv
línea. Esta forma de sed es un poco más portátil (si eso es importante para usted) ya que las diferentes distribuciones de Linux tienen diferentes comandos de cambio de nombre, mientras que sed es universal.O, alternativamente, el script se puede modificar de la siguiente manera para realizar la conversión de nombre de archivo a minúsculas al principio usando en su
tr
lugar:Para ejecutar comandos ligeramente diferentes para diferentes tipos de archivos, se puede usar una declaración de caso bash en este script. Por ejemplo:
En este ejemplo, el cambio de nombre de los archivos MOV que tienen marcas de tiempo CreateDate CUALQUIER NÚMERO de horas DESPUÉS o ANTES de los archivos JPG se ajusta utilizando otros datos EXIF (-tur) y eliminando ese sufijo de diferencia horaria, y podría ser necesario cambiar -tur parte según la ubicación establecida en el sistema.
fuente
$i
para$j
que no haya hecho nada). En cambio, inserté la conversión de nombre de archivo a minúsculas al principio y me tomé la libertad de agregar esto como otra opción (que funcionó al menos para mí) al final de su respuesta para que pueda aceptar su respuesta. Por supuesto, puede editar su respuesta más como lo desee.Necesitaba cambiar el nombre de mis fotos y encontré esta pregunta aquí; acabo de descubrir que lo
exiftool
maneja de forma nativa:De http://www.sno.phy.queensu.ca/~phil/exiftool/filename.html
Si desea realizar un seguimiento del nombre de archivo original y escribir minúscula de extensión:
Lo mismo funciona también con todo el nombre de archivo en minúsculas:
fuente
Sé que dijiste que preferías un script, sin embargo, si estás abierto a una aplicación Java gratuita puedes usar AmoK Exif Sorter
fuente
Lo usaría
krename
para esto. Esofuente
Pyrenamer no funcionará en mi nuevo Ubuntu 16.04 instalado, por lo tanto, tengo que encontrar otra forma de resolver este problema también.
Tengo archivos como IMG_0001.JPG, IMG_0002.JPG, ... en una carpeta. Consulte este sitio, /programming/917260/can-var-parameter-expansion-expressions-be-nested-in-bash
Instale el "exiv2" primero, y escribí la siguiente línea de comando:
para img en $ (ls *. [Jj] [Pp] [Gg] 2> / dev / null); do exiv2 -r '% Y% m% d_% H% M% S _' "$ (tmp = $ {img %%. *}; echo $ {tmp ## * _})" renombrar "$ img"; hecho
Los nombres de los archivos de salida son AAAAMMDD_HHMMSS_0001.JPG, AAAAMMDD_HHMMSS_0002.JPG, ... etc. Incluso las fotos fueron tomadas en el mismo segundo, el número de serie original de la foto hará la diferencia.
fuente