在bash中,我需要将给定目录的所有文件名放入数组中。此外,我需要每个文件都是数组中的一个元素,这样如果我的目录包含3个文件:file1.txt
,file2.txt
和file3.txt
,我的数组将如下所示。
echo $arr
{file1.txt, file2.txt, file3.txt}
答案 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=(*)