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
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=($(ls ${prefix}*.text))
pour créer un tableauCheers 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
Vous devez vous connecter pour publier un commentaire.
ne pas faire un tableau, il fait une seulement une chaîne séparée par des espaces de noms de fichier.
que vous avez à faire
pour en faire un tableau.
$Dirlist référence uniquement le premier élément, vous devez utiliser
de faire référence à tous d'entre eux dans la boucle.
"${dirlist[@]}"
au lieu de${dirlist[*]}
pour se prémunir contre les fichiers dont les noms contiennent des espaces.Et merci de ne pas utiliser
ls
!dirlist=(${prefix}*.text)
est plus simple et moins sujette aux erreurs.OriginalL'auteur KarelSk
Vous n'êtes pas créer un tableau, sauf si vous entourer de
(
)
:OriginalL'auteur Costi Ciudatu
OriginalL'auteur Mikhail Vladimirov
itérer tableau à l'aide d'un compteur de
OriginalL'auteur dilshad