Arrays 在文件名中使用ls和空格进行迭代

Arrays 在文件名中使用ls和空格进行迭代,arrays,bash,loops,space,Arrays,Bash,Loops,Space,我在Ubuntu上使用bash,我在文件夹中有一些文件,一些文件名称中有空格,其他文件则没有空格 我想要一个带有文件名的数组。 示例:[foo.txt、I am a file.txt、bar.jpg等] 我的代码: for x in "$(ls -1 test/)"; do fileList+=($x) done 我得到:[foo.txt、I、am、a、file.txt、bar.jpg等] 如果我把fileList+=(“$x”)放进一行数组[foo.txt我是一个file.txt

我在Ubuntu上使用bash,我在文件夹中有一些文件,一些文件名称中有空格,其他文件则没有空格

我想要一个带有文件名的数组。 示例:[foo.txt、I am a file.txt、bar.jpg等]

我的代码:

for x in "$(ls -1 test/)"; do 
    fileList+=($x)
done
我得到:[foo.txt、I、am、a、file.txt、bar.jpg等]

如果我把
fileList+=(“$x”)
放进一行数组[foo.txt我是一个file.txt bar.jpg等]

我怎样才能得到我想要的


谢谢。

尝试使用read,如下所示:

ls | while read f ; do
   echo "$f"
done

尝试使用read,如下所示:

ls | while read f ; do
   echo "$f"
done

为什么不使用shell globs呢?例如

for x in test/*; do
     ...

编辑:


也可能需要。

为什么不使用shell globs?例如

for x in test/*; do
     ...

编辑:


也可能需要。

+1为了避免在每个名称前面加上
test/
,请使用
pushd-test;文件列表=(*);popd
在扩展全局之前更改工作目录。它非常适合我!谢谢;)但我还有一个问题要问其他人。如何删除所有字符串中的test/in?这里我得到了类似[test/foo.txt、test/bar.jpg等]的标签+1,为了避免在每个名字前面加上
test/
,请使用
pushd-test;文件列表=(*);popd
在扩展全局之前更改工作目录。它非常适合我!谢谢;)但我还有一个问题要问其他人。如何删除所有字符串中的test/in?在这里,我得到了类似[test/foo.txt、test/bar.jpg等]的标签。OP需要一种处理文件名中空格的技术,这就是。它只适用于包含空格的文件名子集,而不是所有文件名。谢谢你们两位的建议-我将尝试改革我的方式!OP需要一种技术来处理文件名中的空格,就是这样。它只适用于包含空格的文件名子集,而不是所有文件名。谢谢你们两位的建议-我将尝试改变我的方式!