我试图浏览一个包含空格的文件夹列表。文件夹看起来像
/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
对于不分隔数组并作为目录一部分包含的空间,我需要做些什么?
谢谢!
答案 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感染的可怕做法...