Tengo una carpeta que contiene muchas subcarpetas llenas de imágenes. Ver imagen adjunta por ejemplo.
Básicamente, quiero recorrerlos todos y reducir el tamaño de las imágenes para que ninguna tenga más de 1024 píxeles. Son todos jpegs.
Soy consciente de los comandos SIPS, es decir
sips -Z 1024 *.png
Sin embargo, eso sólo funciona si todas las imágenes están en el directorio actual.
¿Cómo lo configuro para recorrer todos los subdirectorios?
Respuesta1
Puedes ejecutarlo con buscar:find images/path -type f -name '*.png' -exec sips -Z 1024 {} \;
Buscar buscará archivos (-tipo f), con extensión png (-nombre '*.png') dentro del directorio 'imágenes/ruta' y ejecutará el comando en el parámetro, reemplazando "{}" con el nombre del archivo, debe finalizar el comando con "\;".
Respuesta2
Logré cambiar un pequeño script bash que funcionó para mí.
#!/bin/bash
find "foldername" -type f | \
while read file ; do
echo "processing ${file}"
sips -Z 2000 ${file}
done