![Tener problemas con el comando "convertir" cuando al destino le faltan subdirectorios](https://rvso.com/image/747352/Tener%20problemas%20con%20el%20comando%20%22convertir%22%20cuando%20al%20destino%20le%20faltan%20subdirectorios.png)
Tengo un directorio llamado src
lleno 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 thumb
así:
find ./src -type f -follow -iname '*.jp*g' -exec convert -resize 150x150x "{}" "./thumb/${size}/{}" \;
Esto no funcionó porque el thumb
directorio inicialmente está vacío y no tiene la misma estructura de directorio que src
.
Intenté buscar man convert
pero 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 thumb
directorio? ¿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".