Table of Contents

Ordenar ficheros (vídeos / fotos) concatenando como prefijo / sufijo la fecha de modificación

Para organizar múltiples imágenes o vídeos, algo muy socorrido es poder agregar de manera automática y masiva un sufijo o prefijo (más útil por norma) con la fecha de modificación del archivo. Para ello podemos hacer uso de un comando como el siguiente.

Lectura previa recomendada para entender las diferentes fechas: Leer

# Agregando un prefijo con la fecha de modificación a todos los ficheros.
for f in *; do mv -- "$f" "$(date +%Y-%m-%d -r "${f}")-$f"; done
 
# Agregando un sufijo con la fecha de modificación a todos los ficheros.
for f in *; do mv -- "$f" "$f-$(date +%Y-%m-%d -r "${f}")"; done

Ejemplo.

# Listar los ficheros con extensión mp4.
 ls -l *.mp4
-rw-r--r-- 1 XXX XXX 228875853 mar  2  2015 VIDEO0130.mp4
-rw-r--r-- 1 XXX XXX  42700744 abr  3  2015 VIDEO0135.mp4
-rw-r--r-- 1 XXX XXX 111839232 jul 11  2015 VIDEO0154.mp4
-rw-r--r-- 1 XXX XXX  48100045 jul 11  2015 VIDEO0155.mp4
-rw-r--r-- 1 XXX XXX  36963845 jul 11  2015 VIDEO0156.mp4
-rw-r--r-- 1 XXX XXX  83025336 jul 11  2015 VIDEO0157.mp4
-rw-r--r-- 1 XXX XXX   3189836 ene  6  2002 VIDEO0165.mp4
-rw-r--r-- 1 XXX XXX   2969562 dic 25  2015 VIDEO0167.mp4
-rw-r--r-- 1 XXX XXX  36778469 ene  3  2016 VIDEO0169.mp4
-rw-r--r-- 1 XXX XXX  82058520 may 10 21:17 VIDEO0172.mp4
 
# Agregar un prefijo con la fecha de modificación solo a los ficheros .mp4 del directorio actual.
for f in *.mp4; do mv -- "$f" "$(date +%Y-%m-%d -r "${f}")-$f"; done
 
# Comprobar el resultado.
ls -l *.mp4
-rw-r--r-- 1 XXX XXX   3189836 ene  6  2002 2002-01-06-VIDEO0165.mp4
-rw-r--r-- 1 XXX XXX 228875853 mar  2  2015 2015-03-02-VIDEO0130.mp4
-rw-r--r-- 1 XXX XXX  42700744 abr  3  2015 2015-04-03-VIDEO0135.mp4
-rw-r--r-- 1 XXX XXX 111839232 jul 11  2015 2015-07-11-VIDEO0154.mp4
-rw-r--r-- 1 XXX XXX  48100045 jul 11  2015 2015-07-11-VIDEO0155.mp4
-rw-r--r-- 1 XXX XXX  36963845 jul 11  2015 2015-07-11-VIDEO0156.mp4
-rw-r--r-- 1 XXX XXX  83025336 jul 11  2015 2015-07-11-VIDEO0157.mp4
-rw-r--r-- 1 XXX XXX   2969562 dic 25  2015 2015-12-25-VIDEO0167.mp4
-rw-r--r-- 1 XXX XXX  36778469 ene  3  2016 2016-01-03-VIDEO0169.mp4
-rw-r--r-- 1 XXX XXX  82058520 may 10 21:17 2016-05-10-VIDEO0172.mp4

Cambiar de extensión todos los ficheros de una carpeta

Cambiar de extensión todos los ficheros de una carpeta.

Remplazar todas las extensiones JPEG por jpeg en todos los archivos *.JPEG

# Usando rename (util-linux).
rename JPEG jpeg *.JPEG
rename 's/JPEG/jpeg/' *.JPEG   # Sistemas Debian y posiblemente derivados.
 
# Usando el comando mv de la misma manera que vimos anteriormente.
for f in *.JPEG; do mv -- "$f" "${f%.JPEG}.jpeg"; done

Eliminar prefijos / sufijos de múltiples ficheros

Eliminar prefijos y sufijos puede hacerse usando la expansión de variables de Bash y el comando mv.

Eliminar prefijo: Eliminar todo hasta llegar a un patrón (“_”).

# Ficheros a los que se les quiere quitar el prefijo "d2221f1bd1b59373_" y "d3b66b4e4e_" respectivamente.
d2221f1bd1b59373_fichero_1.mp3
d3b66b4e4e_fichero_2.mp3
 
for VAR in *.mp3; do mv "$VAR" "${VAR#*_}"; done
 
# Ficheros resultantes.
fichero_1.mp3
fichero_2.mp3

Eliminar sufijo: Eliminar desde el final del nombre hasta llegar a un patrón, en este caso “_”.

# Ficheros a los que se les quiere quitar el prefijo d2221f1bd1b59373_ y d3b66b4e4e_ respectivamente.
fichero_1.mp3_d2221f1bd1b59373
fichero_2.mp3_d3b66b4e4e
 
for VAR in *; do mv "$VAR" "${VAR%_*}"; done
 
# Ficheros resultantes.
fichero_1.mp3
fichero_2.mp3