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

mat*_*n88 1 unix arrays bash

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

echo $arr
{file1.txt, file2.txt, file3.txt}
Run Code Online (Sandbox Code Playgroud)

Joh*_*ica 6

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

files=(*)
echo "${files[@]}"
Run Code Online (Sandbox Code Playgroud)

你可以遍历数组:

for file in "${files[@]}"; do
    echo "$file"
done
Run Code Online (Sandbox Code Playgroud)

或访问个别元素:

echo "${files[0]}"
echo "${files[1]}"
echo "${files[2]}"
Run Code Online (Sandbox Code Playgroud)

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

  • 在`file =(*)`之前设置`shopt -s nullglob`是好的,这样数组就不会在空目录上得到一个`*`元素. (2认同)