bash 中不包含 space 的文件夹名称数组

Array of folder names without space in bash

我正在尝试 运行 浏览包含 space 的文件夹列表。文件夹看起来像

/Volumes/SAMPLE
/Volumes/SAMPlE 1
/Volumes/SAMPLE 2

等等。要设置包含所有这些文件夹的数组,我有

dirlist=(`ls -d /Volumes/*${prefix}*`);

当我 运行 像

for ((i = 0; i < ${#dirlist[@]}; i++))
do
    echo "${dirlist[$i]}";
done

我得到了文件夹名称,但是 space 已经创建了单独的条目:

/Volumes/SAMPLE
/Volumes/SAMPLE
1
/Volumes/SAMPLE
2
/Volumes/SAMPLE
3
/Volumes/SAMPLE
4
/Volumes/SAMPLE
5

要space不分离数组并作为目录的一部分,我需要做什么?

谢谢!

简单don't use ls:

dirlist=(/Volumes/*"${prefix}"*)

示例会话:

$ cd -- "$(mktemp --directory)"
$ touch a 'foo bar' z
$ dirlist=(./*)
$ printf '%s\n' "${dirlist[@]}"
./a
./foo bar
./z

不需要数组

find /Volumes -maxdepth 1 -type d -name "*${prefix}*"

然而,在文件名和目录名中包含空格是一种被 Windows...

感染的糟糕做法