bash: mettre des fichiers de la liste dans une variable et de mais la taille de la matrice est 1

Je suis répertoriant les fichiers dans un répertoire et boucle à travers eux, d'accord, MAIS j'ai besoin de savoir combien il y en a trop. ${#dirlist[@]} est toujours de 1, mais pour la boucle fonctionne?

#!/bin/bash
prefix="xxx"; # as example

len=${#prefix}; # string length
dirlist=`ls ${prefix}*.text`;
qty=${#dirlist[@]};  # sizeof array is always 1
for filelist in $dirlist
do
    substring="${filelist:$len:-5}";
    echo "${substring}/${qty}";
done

J'ai des fichiers xxx001.texte jusqu'à xxx013.texte
mais tout ce que j'obtiens est 001/1 002/1 003/1

utilisation dirlist=($(ls ${prefix}*.text)) pour créer un tableau
Cheers Kev, j'ai dû changer la boucle de la liste des fichiers dans ${dirlist[@]}
Vous avez d'abord été dans et m'a donné ce dont j'avais besoin, vous pouvez soumettre une réponse s'il vous plaît
comme David Ongaro, a commenté dans une des réponses, l'utilisation dirlist=(${prefix}*.text) pour créer un tableau. Il prendra en charge les noms de fichiers avec des espaces avec succès.

OriginalL'auteur Waygood | 2013-03-05