在文件名中使用ls和space进行迭代

时间:2013-12-03 22:22:12

标签: arrays bash loops space

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

我想要一个带文件名的数组。 示例:[foo.txt,我是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等]。

我该怎样做才能得到我想要的东西?

谢谢。

2 个答案:

答案 0 :(得分:5)

为什么不使用shell globs? E.g。

for x in test/*; do
     ...

filelist=( test/* )

编辑:

shopt -s nullglob
shopt -s dotglob
可能也需要

答案 1 :(得分:-1)

尝试使用read,如下所示:

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