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,
- Más anchas que 1080px
- Más altas que 1920px
- 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.