bash中没有空格的文件夹名称数组

时间:2017-06-12 18:46:13

标签: bash glob

我试图浏览一个包含空格的文件夹列表。文件夹看起来像

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

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

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

当我运行

之类的东西时
for ((i = 0; i < ${#dirlist[@]}; i++))
do
    echo "${dirlist[$i]}";
done

我获取文件夹名称,但空格已创建单独的条目:

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

对于不分隔数组并作为目录一部分包含的空间,我需要做些什么?

谢谢!

2 个答案:

答案 0 :(得分:4)

简单don't use ls

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

示例会话:

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

答案 1 :(得分:1)

不需要此

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

然而,在文件名和目录名中包含空格是一种被Windows感染的可怕做法...