2010-10-09 6 views

Répondre

3

utiliser le tableau:

abc=($(find ...)) 
abc_length=${#abc[@]} 

Retrieve résultat n-ième, dire 10:

echo ${abc[9]} 

Ou énumérer tous:

for dir_name in "${abc[@]}"; do 
    echo $dir_name 
done 

Mise à jour: ne asker semblent vouloir traiter dans le script, donc:

abc_length=$(find ... | wc -l) 

Vous pouvez réduire le nombre de 1 parce que le premier résultat est ~/$folder:

abc_length=$(($(find ... | wc -l) - 1)) 
+0

Lorsque vous essayez de faire une boucle sur abc, le premier résultat apparaîtra! \t abc = ($ (find ~/$ dossier -name "$ file @ *" -type f)), et la boucle: pour j dans "$ abc". Y a-t-il quelque chose qui ne va pas? –

+0

Utilisez 'pour j dans $ {abc [@]}'. – livibetter

+1

Ne pas oublier les guillemets: 'pour j dans" $ {abc [@]} "'. –

4

Je ne suis pas sûr de ce que vous voulez dire par "articles", donc je vais supposer "entrées de répertoire". En supposant que vous n'avez pas de fichiers avec des nouvelles lignes dans leur nom, echo "$abc" | wc -l fera l'affaire.

Si vous souhaitez compter le nombre de caractères, utilisez à la place wc -c.

+0

L'echo "$ abc" | wc - l fonctionne bien. Mais comment obtenir cette valeur à une variable? –

+1

juste 'abc_length = $ (trouver ... | wc -l)' ferait ce que vous voulez. – livibetter

+0

J'ai actuellement: results = 'find ~/$ dossier -name" $ ​​fichier @ * "-type f'. Comment puis-je avoir un results_count qui au lieu d'appeler à nouveau find, utilisera seulement les données qui sont déjà dans la variable "results"? Merci –

Questions connexes