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.