O que você mencionou é um dos problemas básicos que as pessoas enfrentam quando tentam ler nomes de arquivos. Às vezes, pessoas com conhecimento limitado e com um equívoco na estrutura de arquivos e pastas tendem a esquecer que " No UNIX Tudo é um arquivo ". Então, eles não entendem que precisam manipular espaços também, já que o nome do arquivo pode consistir em 2 ou mais palavras com espaços.
Solução: Então, uma das maneiras mais conhecidas de fazer isso é fazer uma leitura limpa .
Nós aqui vamos ler todos os arquivos presentes e mantê-los em uma variável, da próxima vez que fizermos o processamento desejado, teremos que manter a variável dentro de aspas, o que preservará os nomes dos arquivos com espaços. Esta é uma das maneiras básicas de fazer isso, no entanto, as outras respostas fornecidas pelas outras pessoas aqui funcionam bem.
SCRIPT:
find /path/to/files/ -iname "*jpg" | \
while read I; do
cp -v --parent "$I" /backup/dir/
done
Aqui estou lendo os arquivos, dando o caminho para eles e o que eu estou lendo eu estou mantendo-os dentro de uma variável I, que vou citar em um momento posterior, enquanto o processamento para preservar os espaços para processá-lo corretamente .
Espero que isso ajude você de alguma forma.