bash script, create array of all files in a directory

前端 未结 3 1207
你的背包
你的背包 2020-12-08 10:40

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 ab

相关标签:
3条回答
  • 2020-12-08 11:09

    Your solution will work for generating the array. Instead of using a while loop, use a for loop:

    #!/bin/bash
    files=($( ls * )) #Add () to convert output to array
    counter=0
    for i in $files ; do
      echo Next: $i
      let counter=$counter+1
      echo $counter
    done
    
    0 讨论(0)
  • 2020-12-08 11:20
    # create an array with all the filer/dir inside ~/myDir
    arr=(~/myDir/*)
    
    # iterate through array indexes to get 'counter'
    for counter in ${!arr[*]}; do
        echo $counter           # show index
        echo "${arr[counter]}"  # show value
    done
    
    0 讨论(0)
  • 2020-12-08 11:23

    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
    
    0 讨论(0)
提交回复
热议问题