O seu loop é melhor escrito como
find ... | while read -r file
Mas você precisa se certificar de citar o nome do arquivo dentro do loop. Então acabamos com
find /path/to/directory -type f -name *.pdf | while read -r file
do
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile="new_$file" "$file"
rm "$file"
mv "new_$file" "$file"
done
(Observe também que todos os ;
não são necessários).
Agora, esse loop tem possíveis problemas de propriedade / permissão de arquivos, mas essa é outra pergunta: -)