Existem dois problemas. O IFS para a saída de locate e o IFS para zenity .
IFS é uma variável do shell que contém uma string de caracteres, e qualquer uma delas quebrará uma string em palavras. O valor usual é ' space tab newline '
Ambos são corrigidos ao definir IFS para uma nova linha imediatamente antes de executar locate .
export IFS='
'
FOUNDFILES=($(locate --database ~/.locate.db -i -b "$INPUT"))
O segundo problema é corrigido por export ing este valor de IFS no ambiente, de modo que também afeta zenity . Isso significa que você também precisa modificar a criação de tempzen.txt para usar novas linhas como separadores de palavras.
if [ $x == 0 ]
then
echo -e "--list\n--title\nFILE-SELECTOR\n--column\nserialno.\n--column\nfile\n--radiolist\nTRUE\n${FOUNDFILES[$x]}\n--width\n1000\n--height\n600" >> /home/$USERNAME/tempzen.txt
x=$((x+1))
else
echo -e "FALSE\n${FOUNDFILES[$x]}" >> /home/$USERNAME/tempzen.txt
x=$((x+1))
fi