Terminé en una situación extraña. Tengo 35 carpetas. El primero se llama 1, el segundo se llama 2, y así sucesivamente. En cada una de estas carpetas, hay 4 archivos. '1.png', '2.png', '3.png', '4.png'. En cada una de estas carpetas, deseo ejecutar "convertir *.png -append out.pdf", cambiar el nombre de cada 'out.pdf' según su directorio original (por ejemplo, 'out1.pdf' de la primera carpeta) y luego descomprimir cada una. pdf de su carpeta original. es posible? Probé bucles, pero todos los que probé parecen no estar de acuerdo con el sistema de nombres.
Respuesta1
Pruebe algo como esto:
#!/bin/sh
for dir in $(seq 1 35)
do
(
cd $dir || exit 1
rm -f out$dir.pdf
for n in 1 2 3 4
do
convert $n.png -append out$dir.pdf || exit 2
done
)
done
Este script es compatible con Posix y no requiere bash
, de ahí el archivo #!/bin/sh
.
El código entre paréntesis se ejecuta en un subshell, por lo que el cd
comando solo cambia el directorio hasta el paréntesis de cierre. La siguiente iteración del bucle comenzará en el directorio de trabajo original.
En su ejemplo, creo que la sintaxis convert
es incorrecta. Convertir solo toma un archivo de entrada y, en su pregunta original, *.png
pasaría cuatro archivos de entrada. Quizás eso sea parte de tu problema.