2017-02-17 113 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=(*) 
相關問題