Se você tiver nomes estranhos realmente , que contenham novas linhas ou barras invertidas e afins, você pode fazer algo assim:
find . -type f -name '*.pdf' -print0 |
while IFS= read -r -d '' file
do convert -verbose -density 500 -resize 800 "${file}" "${file%.*}.png"
done
Isso deve ser capaz de lidar com praticamente qualquer coisa que você jogue.
Truques usados:
-
find ... -print0
: faz com quefind
imprima seus resultados separados pelo caractere nulo, vamos lidar com as novas linhas. -
IFS=
: isso desativará a divisão de palavras, necessária para lidar com o espaço em branco. -
read -r
: desativa a interpretação de caracteres de escape de barra invertida para lidar com arquivos que contenham barras invertidas. -
read -d ''
: configura o delimitador de registro para o caractere nulo, para lidar com a saída do find e manipular corretamente nomes de arquivos com caracteres de nova linha. -
${file%.*}.png
: usa as capacidades de manipulação de string internas do shell para remover a extensão.