O problema é que não há uma boa maneira de manter as duas expansões curinga em sincronia e iterar sobre elas, como você está querendo fazer. Como você só quer fazer isso em um arquivo de cada vez, seria mais fácil simplesmente usar find. Se você quiser recursivamente fazer isso, eu faria find . -iname '*.pdf' -exec pdf3djvu -o '{}'.djvu '{}' \;
Se você tem apenas alguns diretórios que você quer fazer isso, venha com curinga shell que se expande para esses diretórios, e use isso como o argumento para encontrar em vez de% código%. Por exemplo, se você tem vários diretórios que terminam com "djvus" (como "pie_djvus" e "flag_djvus"):
find ./*djvus/ -maxdepth 1 -iname '*.pdf' -exec pdf3djvu -o '{}'.djvu '{}' \;
Usar o .
após o glob garante que o glob corresponderá apenas aos diretórios e especificar a profundidade máxima de 1 garante que o find não vá mais do que um nível de profundidade nos diretórios especificados (que é o nível superior)
Em ambos os casos, você vai acabar com coisas como "file.pdf.djvu", que podem ou não ser irritantes para você. Então, haverá um segundo passo de pós-processamento necessário se você usou find. Aqui está uma maneira de fazer isso se você estiver usando um bash recente como seu shell (alguns shells irão dividir os nomes dos arquivos nos espaços, o que quebrará isso - mas o bash atual não o faz).
for F in *.pdf.djvu; do mv -v "$F" "${F%.pdf.djvu}.djvu"; done