Você se esqueceu de citar $f
, então o nome do arquivo provavelmente ficou cheio de palavras devido ao espaço em branco no nome do arquivo. Eu também sugiro usar ./*.dvi
, pois isso evitará problemas se um nome de arquivo começar com -
(o que fará com que a maioria dos comandos o trate como um conjunto de opções em vez de um nome de arquivo)
for f in ./*.dvi; do catdvi -e 1 -U "$f" > "${f%.dvi}.txt"; done
Ou talvez combine os dois loops
for f in ./*.tex; do
base=${f%.tex};
latex "$f" &&
catdvi -e 1 -U "$base.dvi" > "$base.txt";
done