将目录中的所有文件名放入数组中

时间:2017-02-17 22:55:54

标签: arrays bash unix

在bash中,我需要将给定目录的所有文件名放入数组中。此外,我需要每个文件都是数组中的一个元素,这样如果我的目录包含3个文件:file1.txtfile2.txtfile3.txt,我的数组将如下所示。

echo $arr
{file1.txt, file2.txt, file3.txt}

2 个答案:

答案 0 :(得分:6)

使用var=(...)创建数组变量。当前目录中所有文件的glob为*。一起:

files=(*)
echo "${files[@]}"

你可以遍历数组:

for file in "${files[@]}"; do
    echo "$file"
done

或访问单个元素:

echo "${files[0]}"
echo "${files[1]}"
echo "${files[2]}"

注意明智地使用双引号。这些确保正确处理具有空格和其他特殊字符的文件。

答案 1 :(得分:1)

最简单的解决方案是使用:

shopt -s nullglob dotglob
files=(*)