find con una variable en exec
20200417
De comentario realizado en telegram se tiene un escenario para buscar archivos y convertirlos de formato
for i in $(find . -name *.nef)
do
convert $i $i.jpg;
done
Con el comando find se puede ejecutar directamente un comando
find . -name ".nef" -exec convert {} {}.jpg \;
Sin embargo esto genera archivos .net.jpg
Para evitar eso se usa la expresión ${elNom%.*} para eliminar la extensión original. Pero resulta que find no puede interpretar directamente las variables de ambiente.
Por lo que es necesario ejecutar find con un llamado a un subshell
find . -name "*.nef" -exec bash -c 'elNom={}; convert $elNom ${elNom%.*}.jpg' \;
Lo que realiza es al encontrar archivos .nef ejecuta un bash y dentro del shell asigna el archivo encontrado a la variable elNom, luego esa variable se emplea en el convert como nombre original y el segundo quita la extensión y agrega .jpg
Anterior: petrohs:tekini
