Não sei se você pode ter um pipe dentro de -exec
. find -exec echo {} \| sed s/tiff/jpg \;
parece não funcionar.
Se você acha que sua melhor opção é criar um script para fazer a conversão, por exemplo,
convert_tiff_to_jpg :
#!/bin/bash
echo "Processing $1"
convert "$1" "${1/%tiff/jpg}"
e chame-o usando find -exec
como você pretendia:
find ./out -regex ".*_p[bg]_.*tiff" -exec convert_tiff_to_jpg {} \;
Existem algumas maneiras de usar find -print0 | xargs -0
, mas todas são bem feias:
find ./out -regex ".*_p[bg]_.*tiff" -print0 |
while IFS= read -d $'find ./out -regex ".*_p[bg]_.*tiff" -print0 |
while IFS= read -d $'find ./out -regex ".*_p[bg]_.*tiff" -print0 |
xargs -0 -I FILE bash -c 'F="FILE"; echo "$F" "${F/%tiff/jpg}"'
' -r filename; do
echo "Processing $filename"
convert "$filename" "${filename/%tiff/jpg}"
done
' -r filename; do
echo "Processing $filename"
convert "$filename" "$(echo "$filename" | sed 's/tiff$/jpg/')"
done
ou
#!/bin/bash
echo "Processing $1"
convert "$1" "${1/%tiff/jpg}"
ou
find ./out -regex ".*_p[bg]_.*tiff" -exec convert_tiff_to_jpg {} \;
Observe que alterei s/tiff/jpg
para s/tiff$/jpg
, de forma que, se tiff
aparecer em qualquer lugar diferente do final do nome do arquivo, ele não será alterado.