¿Omitiendo extensión con find?


11

Necesito crear miniaturas de múltiples archivos .png y me gustaría hacerlo usando la convertutilidad ImageMagicks . Para encontrar recursivamente todos los archivos que no son miniaturas en sí, estoy usando la siguiente llamada (dividida en dos líneas para que sea legible):

find . -type f -name "*.png" -not -name "*thumb.png*" \
  -exec convert {} -thumbnail 200x200 {}.thumb.png \;`

Pero esto, por supuesto, crearía un archivo llamado a.png.thumb.pngcuando se ejecuta en un archivo llamado a.png. ¿Cómo podría eliminar la .pngextensión del segundo {}parámetro pasado para convertir?

Respuestas:


14

La forma más fácil de hacer esto es pasar el efecto {}a un shell como shy hacer que el shell lo haga:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.