¿Recuperaste miles de fotografías con PhotoRec y ahora tienes cientos de carpetas recup_dir.* llenas de archivos con nombres como f123456789.jpg? 😵💫
No necesitas organizarlas manualmente. En este tutorial vamos a utilizar ExifTool + Bash para leer automáticamente la fecha de las fotografías y organizarlas en carpetas por año y mes. 📅📸
🔎 ¿Qué hace este script?
El script analiza automáticamente las carpetas recuperadas por PhotoRec y realiza las siguientes tareas:
- 📸 Busca fotografías recuperadas.
- 🎥 Busca videos recuperados.
- 📅 Lee la fecha original almacenada en los metadatos EXIF.
- 🔎 Si no encuentra
DateTimeOriginal, intenta utilizarCreateDate. - 📁 Crea automáticamente carpetas por año y mes.
- ❓ Envía las fotografías sin fecha a
SinFecha. - ❓ Envía los videos sin fecha a
SinFecha. - 🔄 Evita sobrescribir archivos que tengan el mismo nombre.
- 📝 Guarda un registro de todos los archivos movidos.
- 🧹 Elimina las carpetas de recuperación que quedan vacías.
📂 Antes de organizar
Después de utilizar PhotoRec normalmente tendremos una estructura parecida a esta:
recup_dir.1/
recup_dir.2/
recup_dir.3/
recup_dir.4/
recup_dir.5/
...
Dentro de estas carpetas PhotoRec puede haber recuperado miles de archivos con nombres genéricos.
✨ Resultado final
Después de ejecutar el script, la información quedará organizada de esta manera:
Organizado/
├── Fotos/
│ ├── 2010/
│ │ ├── 01/
│ │ ├── 02/
│ │ └── 12/
│ ├── 2011/
│ ├── 2012/
│ ├── 2020/
│ └── SinFecha/
│
└── Videos/
├── 2010/
│ ├── 01/
│ └── 08/
├── 2011/
└── SinFecha/
📸 Ejemplo
Supongamos que PhotoRec recuperó una fotografía con el nombre:
recup_dir.502/f268968512.jpgSi ExifTool encuentra que la fotografía fue tomada en julio de 2018, el archivo será movido automáticamente a:
Organizado/Fotos/2018/07/f268968512.jpgDe esta forma podemos transformar una recuperación desordenada en una biblioteca mucho más fácil de administrar. 🚀
🛠️ Instalar ExifTool
En Linux Mint, Ubuntu y otras distribuciones basadas en Debian podemos instalar ExifTool con:
sudo apt update
sudo apt install exiftoolPodemos comprobar que está instalado con:
exiftool -ver💻 Crear el script
Primero debemos entrar en la carpeta donde tenemos las carpetas recup_dir.*.
nano organizar_recuperados.shDespués pegamos el siguiente código:
#!/bin/bash
DEST="$(pwd)/Organizado"
LOG="$(pwd)/organizar.log"
mkdir -p "$DEST/Fotos/SinFecha"
mkdir -p "$DEST/Videos/SinFecha"
echo "==================================" > "$LOG"
echo " ORGANIZACIÓN DE ARCHIVOS" >> "$LOG"
echo " Inicio: $(date)" >> "$LOG"
echo "==================================" >> "$LOG"
mover() {
local origen="$1"
local carpeta="$2"
mkdir -p "$carpeta"
local nombre
nombre=$(basename "$origen")
local base="${nombre%.*}"
local ext="${nombre##*.}"
if [[ "$base" == "$ext" ]]; then
ext=""
else
ext=".$ext"
fi
local destino="$carpeta/$nombre"
local i=1
while [[ -e "$destino" ]]; do
destino="$carpeta/${base}_$i$ext"
((i++))
done
mv "$origen" "$destino"
echo "$origen -> $destino" >> "$LOG"
}
##################################
# FOTOS
##################################
echo
echo "=================================="
echo " ORGANIZANDO FOTOS"
echo "=================================="
echo
echo "Contando fotos..."
TOTAL=$(find recup_dir.* -type f \( \
-iname "*.jpg" -o \
-iname "*.jpeg" -o \
-iname "*.png" -o \
-iname "*.bmp" -o \
-iname "*.gif" -o \
-iname "*.webp" -o \
-iname "*.heic" -o \
-iname "*.tif" -o \
-iname "*.tiff" \
\) | wc -l)
echo "Fotos encontradas: $TOTAL"
N=0
find recup_dir.* -type f \( \
-iname "*.jpg" -o \
-iname "*.jpeg" -o \
-iname "*.png" -o \
-iname "*.bmp" -o \
-iname "*.gif" -o \
-iname "*.webp" -o \
-iname "*.heic" -o \
-iname "*.tif" -o \
-iname "*.tiff" \
\) -print0 |
while IFS= read -r -d '' f
do
((N++))
printf "\rFotos: %d / %d" "$N" "$TOTAL"
fecha=$(exiftool -m -s3 -DateTimeOriginal "$f" 2>/dev/null)
if [[ -z "$fecha" || "$fecha" == "0000:00:00 00:00:00" ]]; then
fecha=$(exiftool -m -s3 -CreateDate "$f" 2>/dev/null)
fi
if [[ -n "$fecha" && "$fecha" != "0000:00:00 00:00:00" ]]; then
año="${fecha:0:4}"
mes="${fecha:5:2}"
mover "$f" "$DEST/Fotos/$año/$mes"
else
mover "$f" "$DEST/Fotos/SinFecha"
fi
done
echo
echo
##################################
# VIDEOS
##################################
echo "=================================="
echo " ORGANIZANDO VIDEOS"
echo "=================================="
echo
echo "Contando videos..."
TOTAL=$(find recup_dir.* -type f \( \
-iname "*.mp4" -o \
-iname "*.mov" -o \
-iname "*.3gp" -o \
-iname "*.avi" -o \
-iname "*.mkv" -o \
-iname "*.mts" -o \
-iname "*.m2ts" -o \
-iname "*.wmv" -o \
-iname "*.asf" -o \
-iname "*.mpeg" -o \
-iname "*.mpg" -o \
-iname "*.vob" -o \
-iname "*.webm" -o \
-iname "*.flv" -o \
-iname "*.m4v" \
\) | wc -l)
echo "Videos encontrados: $TOTAL"
N=0
find recup_dir.* -type f \( \
-iname "*.mp4" -o \
-iname "*.mov" -o \
-iname "*.3gp" -o \
-iname "*.avi" -o \
-iname "*.mkv" -o \
-iname "*.mts" -o \
-iname "*.m2ts" -o \
-iname "*.wmv" -o \
-iname "*.asf" -o \
-iname "*.mpeg" -o \
-iname "*.mpg" -o \
-iname "*.vob" -o \
-iname "*.webm" -o \
-iname "*.flv" -o \
-iname "*.m4v" \
\) -print0 |
while IFS= read -r -d '' f
do
((N++))
printf "\rVideos: %d / %d" "$N" "$TOTAL"
fecha=$(exiftool -m -s3 -MediaCreateDate "$f" 2>/dev/null)
if [[ -z "$fecha" || "$fecha" == "0000:00:00 00:00:00" ]]; then
fecha=$(exiftool -m -s3 -CreateDate "$f" 2>/dev/null)
fi
if [[ -n "$fecha" && "$fecha" != "0000:00:00 00:00:00" ]]; then
año="${fecha:0:4}"
mes="${fecha:5:2}"
mover "$f" "$DEST/Videos/$año/$mes"
else
mover "$f" "$DEST/Videos/SinFecha"
fi
done
echo
echo
##################################
# LIMPIEZA
##################################
echo "Eliminando carpetas de recuperación vacías..."
find recup_dir.* -type d -empty -delete
echo
echo "=================================="
echo " FINALIZADO"
echo "=================================="
echo
echo "Fotos y videos organizados en:"
echo "$DEST"
echo
echo "Registro:"
echo "$LOG"
echo
echo "Fin: $(date)" >> "$LOG"
▶️ Dar permisos y ejecutar
Una vez guardado el archivo, le damos permisos de ejecución:
chmod +x organizar_recuperados.shY lo ejecutamos:
./organizar_recuperados.shEl programa mostrará el progreso mientras analiza las fotografías y videos recuperados.
📝 Registro de archivos
El script crea un archivo llamado:
organizar.logEste archivo contiene información de los archivos que fueron movidos y su ubicación final. Es muy útil para comprobar qué hizo el script.
⚠️ ¿Qué pasa con las fotos que no tienen fecha?
No todas las fotografías recuperadas por PhotoRec conservan sus metadatos EXIF. Esto puede ocurrir especialmente cuando el archivo fue recuperado parcialmente o cuando los metadatos ya habían sido eliminados.
Cuando no se encuentra una fecha válida, la fotografía se coloca en:
Organizado/Fotos/SinFecha/Lo mismo ocurre con los videos:
Organizado/Videos/SinFecha/💡 Consejo importante antes de recuperar archivos
Si estás recuperando información importante con PhotoRec, evita trabajar directamente sobre el disco donde se encuentran los archivos eliminados. Lo ideal es recuperar los archivos hacia otro disco para evitar sobrescribir información que todavía podría recuperarse. 💾
🚀 ¿Qué podemos hacer después?
Una vez que las fotografías estén organizadas por fecha, podemos utilizar herramientas como Digikam para administrar grandes colecciones de fotografías y Czkawka para localizar archivos duplicados.
Para música recuperada, una estrategia similar consiste en utilizar MusicBrainz Picard para identificar canciones y corregir sus metadatos, y posteriormente utilizar Navidrome para convertir la colección en una biblioteca musical accesible desde el navegador o el teléfono. 🎵📱
🏁 Conclusión
Con unas cuantas herramientas gratuitas y de código abierto podemos transformar una recuperación desordenada de PhotoRec en una biblioteca organizada automáticamente.
PhotoRec → ExifTool → Organización por fecha → Czkawka/DigiKam → Biblioteca organizada 📸💾🐧
Este método resulta especialmente útil cuando se han recuperado miles de fotografías y videos y queremos volver a construir nuestra colección personal de forma rápida y ordenada. 🚀
Deja un comentario