如何获取目录中的文件列表

如何获取目录中的文件列表

我尝试创建一个数组/列表,将文件名存储在文件夹内。以下命令出于未知原因创建了一个:.怎么可能去除:

> a=$(ls split*)
> echo $a
split_sam.o4433568 split_sam.o4433616 split_sam.o4441795 split-data-1:

答案1

)命令$(ls split*没有创造任何文件名——幸运的是!它也没有创建数组。什么做过do 是ls使用split*通配符调用的,然后将所有结果输出粘贴在一起(删除ls每个文件名之间和最后添加的换行符)并将该组合分配给您的变量。当您随后致电时echo $a额外的发生了一些您不想要的处理:变量的内容进一步受到空格($IFS)和通配符扩展的分割。您很幸运,没有任何名为的文件,例如,split space filesplit more*

您困惑的根源在于您确实split-data-1:在该目录中有一个名为的文件,并且ls很乐意将其交还给您。

相反,您想要做的是找到适合您真正想要的文件的通配符,并使用简单的数组赋值:

a=(split_sam*)

或者

a=(split*)

正如您最初所写,其中仍将包含该split-data-1:文件。

然后,您可以迭代这些文件或将它们作为一个整体进行操作:

for file in "${a[@]}"
do
  ls -d -- "$file"
done

或者

ls -d -- "${a[@]}"

相关内容