web-dev-qa-db-fra.com

script bash, créer un tableau de tous les fichiers dans un répertoire

J'ai un répertoire myDir de nombreux fichiers .html. J'essaie de créer un tableau de tous les fichiers dans le répertoire afin que je puisse être en mesure d'indexer le tableau et être en mesure de faire référence à des fichiers html particuliers dans le répertoire. J'ai essayé la ligne suivante:

myFileNames=$(ls ~/myDir)

for file in $myFileNames; 
#do something

mais je veux pouvoir avoir une variable de compteur et avoir une logique comme celle-ci:

 while $counter>=0;
   #do something to myFileNames[counter]

Je suis assez nouveau dans les scripts Shell et je ne suis pas en mesure de comprendre comment y parvenir, j'apprécierais donc toute aide à ce sujet.

19
anonuser0428

Tu peux faire:

# 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

Vous pouvez également le faire pour l'itération du tableau:

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

Votre solution fonctionnera pour générer la baie. Au lieu d'utiliser une boucle while, utilisez une boucle for:

#!/bin/bash
files=$( ls * )
counter=0
for i in $files ; do
  echo Next: $i
  let counter=$counter+1
  echo $counter
done
7
Paul Hicks