Como lidar com espaços em nomes de arquivos usando aspas duplas em um script Bash

Temos um script em execução em nosso servidor Debian que captura nomes de arquivos em um diretório e os envia à nossa API. Ele funciona bem quando os nomes de arquivos não têm espaços. A resposta usual para esse problema comum é usar aspas duplas ao redor do nome da variável.

No entanto, não consigo encontrar uma solução organizada, breve e definitiva para o nosso caso particular - código abaixo. Apesaresta resposta sugere alterar o separador do espaço para\n, Prefiro usar o método de aspas duplas no código existente.

Aqui está a parte relevante do código:
files=("$(ls $directory)") #$directory has the files we want to loop through

if [ ${#files[@]} -gt 0 ]; then
    getToken
    for i in $files
    do
        echo "$i"
        uploadFiles "$i"
    done
    exit
else
    echo "No files to upload"
    exit
fi

questionAnswers(1)

yourAnswerToTheQuestion