Ordenar Fotos por Tamaños

Es casi una regla que el informático de turno de una empresa se tiene que comer unos marrones a cada cual más raro y exótico, el de hoy ha sido ordenar por tamaño unas 15.000 fotos, así, en frío. Para resolverlo, tenemos dos opciones, ir una a una mirando el tamaño y clasificarla o ser listos y utilizar un programa que lo haga por nosotros.

Yo opté por escribir un pequeño script de Bash para resolver el problema, se identifica el archivo por su tamaño, y se traslada a donde queramos, en este caso particular vamos a discriminar por tres opciones,

  1. Más anchas que 1080px
  2. Más altas que 1920px
  3. Las pequeñas

Para identificar una imagen usamos el comando identify que sin parámetros nos mostrará una salida así:

# identify foto.png
foto.png JPEG 1312x984 1312x984+0+0 8-bit DirectClass 233KB 0.000u 0:00.000

Forma parte de ImageMagick, debes instalarlo para usar el comando identify

Pero para este caso le pasamos el parámetro format para que la salida sólo muestre lo que nos interese:

# identify -format "%w,%h" foto.png
1312,984

Ya con los valores de ancho y alto podemos escribir un bucle que lo haga por cada foto,

#!/bin/bash
# Ordena fotos por alto, ancho y otras
# Fede Diaz, Marzo 2011

TARGET="/path/to/output"
SOURCE="/path/to/input"

mkdir -p $TARGET/{anchas,altas,otras};

for FILE in $(ls $SOURCE);
do
  PROP=$(identify -format "%w,%h" $FILE);
  WEIGHT=$(echo $PROP | cut -d, -f1);
  HEIGHT=$(echo $PROP | cut -d, -f2);
  
  if [ $WEIGHT -gt 1080 ]; then
    mv $FILE $TARGET/anchas/;
  elif [ $HEIGHT -gt 1920 ]; then
    mv $FILE $TARGET/altas/;
  else
    mv $FILE $TARGET/otras/;
  fi
done

Y tardó bastante en procesar todas las fotos, pero siempre es mejor que el trabajo manual.

This entry was posted in Linux Script and tagged , , . Bookmark the permalink.