Você pode usar um loop normal com [ -e e ${xxx%.pdf} para verificar e construir os nomes dos arquivos. Isso lê os caminhos na entrada padrão, um por linha:
while read path
do
[ -e "${path%.pdf}.tex" ] || echo "$path"
done
"${path%.pdf}" se expande para $path com ".pdf" retirado do final e, em seguida, podemos colocar o ".tex" no final diretamente. Se -e xists não fizermos nada, e caso contrário ( || ) imprimirá o caminho para o PDF. Você poderia colocar lógica e comportamento mais complicados lá se quisesse.
As advertências usuais sobre o valor de IFS e nomes de arquivos contendo novas linhas, etc, se aplicam, mas supondo que você não tenha nada de incomum acontecendo que funcione diretamente.