bash script, create array of all files in a directory

arrays, bash, shell, while-loop

Solution

You can do:

# use nullglob in case there are no matching files
shopt -s nullglob

# create an array with all the filer/dir inside ~/myDir
arr=(~/myDir/*)

# iterate through array using a counter
for ((i=0; i<${#arr[@]}; i++)); do
    #do something to each element of array
    echo "${arr[$i]}"
done

You can also do this for iteration of array:

for f in "${arr[@]}"; do
   echo "$f"
done

Problem

I have a directory `myDir` of many .html files. I am trying to create an array of all the files in the directory so I might be able to index the array and be able to refer to particular html files in the directory. I have tried the following line: ``` myFileNames=$(ls ~/myDir) for file in $myFileNames; #do something ``` but I want to be able to have a counter variable and have logic like the following: ``` while $counter>=0; #do something to myFileNames[counter] ``` I am quite new to shell scripting and am unable to figure out how to achieve this hence would appreciate any help regarding this matter.

Original source

Related problems