Contenu d'un répertoire

Bonjour, ce code n'affiche rien je veux savoir ma faute

ls $1 > list
a=0
for i in `echo $list`
do
a= a+ wc -l list
done

6 réponses

  1. Modérateur
    Que désires-tu faire exactement?
    0
    1. je vais écrire un script qui calcule le nombre d'éléments d'un répertoire

      ls $1 > list
      echo " le nombre d'éléments du répertoire" $1 "est " `wc -l list `
      il m'a affiché le nombre d'éléments du répertoire est 2 list
      don j'ai réussi à compter les éléments du répertoire mais je veux pas que le mot list figure
      0
      1. Contributeur
        Salut,
        mais je veux pas que le mot list figure
        wc -l <list 
        0
    2. merci beaucoup
      j'ai une autre question , maintenant je veux parcourir le fichier list et je compte le nombre des fichiers ordinaires
      j'ai écrit
      a=0
      for i in `echo $list`
      do
      if [ -f $i ]
      then
      a=a+1
      fi
      echo " le nombre des fichiers ordinaires est " $a
      done

      aucune résultat n'est affichée
      j'ai besoin d'aide
      0
      1. Contributeur
        a=0
        while read i
        do
        if [ -f "${i}" ]
        then
        ((a++))
        fi 
        done < list
        echo "Nombre de fichier : ${a}"
        0
    3. merci ça marche mais j'ai pas compris la boucle while !!
      qunad on écrit done < list c'est que notre boucle parcoure list ??????????
      0
      1. Contributeur
        qunad on écrit done < list c'est que notre boucle parcoure list ?
        Oui, et qui plus est ligne par ligne sans se soucier s'il y a des espaces, chose que ne fait pas la boucle "for" (du moins sans avoir modifier la variable $IFS) et qui est source d'erreurs ;-(
        0
    4. bonsoir merci pour votre aide :)
      maintenant , j'ai essayé d'afficher récursivement le contenu d'un répertoire ainsi que ses sous répertoires :)
      j'ai écrit ce code :
      if [ -d $1 ]
      then
      ls $1 > liste
      while read i
      do
      if [ -d "$i" ]
      then
      echo "************" $i "*************"
      echo `ls $i`
      fi
      done < liste
      else
      echo "ce n'est pas un répertoire !! "
      fi
      pouvez vous corriger ce code ?????
      0
      1. Contributeur
        #! /bin/bash
        #set -xv
        
        if [ -d ${1} ]
        then
           ls ${1} > liste
           while read i
           do
               if [ -d "${1}/${i}" ]
               then
               echo "************ ${i} *************"
               ls ${1}/${i}
               fi
        done < liste
        else
           echo "ce n'est pas un répertoire !! "
        fi

        A la ligne 9 (ainsi qu'à la 12) il faut mettre le chemin complet sans quoi le test ne peut pas aboutir (la variable $i ne contient qu'un nom et sans son chemin exact la condition ne peut être évaluée).

        A la ligne 12, le echo devant la commande ls est inutile.
        0
    5. merci vraiment vous êtes très gentil ;)
      0