2017-02-17 34 views
1

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

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

回答

5

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

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

你也可以遍历数组了:

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

或访问各个元素:

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

注意合理使用双引号的。那些确保带有空格和其他特殊字符的文件被正确处理。

+2

这是很好的前'文件中设置'禁用了javascript -s nullglob' =(*)'使阵列没有最终得到一个'*'元素在空目录上。 – codeforester

0

最简单的办法是使用:

shopt -s nullglob dotglob 
files=(*) 
相关问题