Contenu d'un répertoire

Fermé
Sawssen - 27 avril 2015 à 17:50
 Sawssen - 28 avril 2015 à 20:45
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

jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
27 avril 2015 à 17:57
Que désires-tu faire exactement?
0
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2015 à 18:14
Salut,
mais je veux pas que le mot list figure
wc -l <list 
0
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2015 à 18:33
a=0
while read i
do
if [ -f "${i}" ]
then
((a++))
fi 
done < list
echo "Nombre de fichier : ${a}"
0
merci ça marche mais j'ai pas compris la boucle while !!
qunad on écrit done < list c'est que notre boucle parcoure list ??????????
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
27 avril 2015 à 19:00
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407
28 avril 2015 à 18:00
#! /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
merci vraiment vous êtes très gentil ;)
0