Acabei em uma situação estranha. Eu tenho 35 pastas. O primeiro é denominado 1, o segundo é denominado 2 e assim por diante. Em cada uma dessas pastas, existem 4 arquivos. '1.png', '2.png', '3.png', '4.png'. Em cada uma dessas pastas, desejo executar "convert *.png -append out.pdf" e renomear cada 'out.pdf' após seu diretório original (por exemplo, 'out1.pdf' da primeira pasta) e depois descompactar cada pdf de sua pasta original. Isso é possível? Eu tentei loops, mas tudo o que tentei parece discordar do sistema de nomenclatura.
Responder1
Tente algo assim:
#!/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 é compatível com posix e não requer bash
, daí o #!/bin/sh
.
O código entre parênteses é executado em um subshell, portanto o cd
comando só altera o diretório até o parêntese de fechamento. A próxima iteração do loop começará no diretório de trabalho original.
No seu exemplo, acho que a sintaxe convert
está incorreta. O Convert leva apenas um arquivo de entrada e, na sua pergunta original, *.png
passaria quatro arquivos de entrada. Talvez isso seja parte do seu problema.