将文件名读入数组

我想运行ls来获取文件列表,然后将结果读入一个数组,其中每个元素对应一个文件名。 这可能吗?

不要使用ls ,它不是为此目的而devise的。 使用通配符。

 shopt -s nullglob array=(*) array2=(file*) array3=(dir/*) 

如果没有匹配, nullglob选项将导致数组为空。

以下将在当前目录中创build一个带有ls输出的数组arr:

 arr=( $(ls) ) 

ls更好更安全,你可以使用echo *

 arr=( * ) echo ${#arr[@]} # will echo number of elements in array echo "${arr[@]}" # will dump all elements of the array 

其实,我不是要走的路。 尝试这个:

 declare -a FILELIST for f in *; do #FILELIST[length_of_FILELIST + 1]=filename FILELIST[${#FILELIST[@]}+1]=$(echo "$f"); done 

从数组中检索名字:

 echo ${FILELIST[x] 

-要么-

 echo ${FILELIST[@]:x:y} 

其中x和y是第一个得到的元素,之后有多less个元素。

有关basharrays的很好的教程,请参阅: http : //www.thegeekstuff.com/2010/06/bash-array-tutorial/

尝试这个,

 PATH="" # could set to any absolute path declare -a ARRAY=(${PATH}/*) 

我假设你稍后会从列表中抽出不需要的东西。