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...
感染的糟糕做法
我正在尝试 运行 浏览包含 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...
感染的糟糕做法