Tener problemas con el comando "convertir" cuando al destino le faltan subdirectorios

Tener problemas con el comando "convertir" cuando al destino le faltan subdirectorios

Tengo un directorio llamado srclleno de subdirectorios y otras imágenes. Intenté usar una declaración bash para cambiar automáticamente el tamaño de todos a otro directorio de destino llamado thumbasí:

find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;

Esto no funcionó porque el thumbdirectorio inicialmente está vacío y no tiene la misma estructura de directorio que src.

Intenté buscar man convertpero parece que no puedo encontrar la opción para crear directorios automáticamente convert. ¿Cuál es una forma efectiva de convertir todas mis imágenes en un tamaño de miniatura en el thumbdirectorio? ¿Necesito crear previamente todos los subdirectorios en miniatura?


EDITAR

Precedí el comando anterior con esto:

find ./src -type d -follow -exec mkdir -p "thumb/${size}/{}" \;

Pero tengo curiosidad por saber si podría hacer todo con un comando en lugar de dos.

Respuesta1

La filosofía de UNIX es tener comandos que hagan una cosa y sólo una cosa. Comandos que pueden escribir en un archivo en lugar desalida estándarya están forzando esta regla.

Si puede hacer todo con un solo comando depende de su definición. Haz esto:

find ./src -type f -follow -iname '*.jp*g' -exec /bin/sh -c \
'mkdir -p `dirname "thumb/'${size}'/{}"` &&'\
'convert -resize 150x150x "{}" "./thumb/'${size}'/{}' \;

contar como un comando o varios: find, sh, mkdir, dirname, convert? Los saltos de línea son sólo para"legibilidad".

información relacionada