Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell

Shell Vos questions sur l'utilisation des commandes shell

Réponse
 
Outils de la discussion
Vieux 19/08/2008, 10h37   #1 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 2
Par défaut Nombre fichiers /répertoires

Salut à tous

J'aimerai faire un script qui me permettrai à son lancement de me donner le nombre de tout les répertoires et fichiers qui se trouvent dans mon répertoire courant.

Je m'explique: je suis dans le répertoire /offres où se trouvent plusieurs dossiers d'affaire. Lorsque je lancerai mon petit programme dans mon répertoire courant (ici /offres), je saurais, pour chaque affaires contenu dans ce répertoire, le nombre de fichiers et de répertoires qu'ils contiennent (et si possible même la taille de répertoire de chaque affaires.)

J'aimerai que le résultat soit envoyé dans un fichier qui contiendra pour chaque ligne le nom du répertoire d'affaire avec son nombre de répertoire et de fichier ainsi que sa taille.
Citation:
Nom_daffaire | Nbre_rép | Nbre_fichiers | taille
Je pense qu'il faudrait une boucle for avec la commande find pour compter le nombre de fichiers et de répertoires.. (find . -type d | wc -l et find . -type f | wc -l) et la redirection >> pour écrire le résultat dans un fichier. Mais j'ai bien du mal à contruire tout ça !!


Je dois le faire assez rapidement
Si vous pouvez m'aider, me donner une trame ou autre, je suis partante

Merci
Neenou est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/08/2008, 11h33   #2 (permalink)
Membre éprouvé
 
Avatar de KindPlayer
 
Date d'inscription: février 2007
Messages: 451
Par défaut

Tu es sur la bonne voie en tout cas. Tu peux te baser sur qq chose de ce genre:

Code :
for REP_AFFAIRE in $(ls -l | grep ^d | awk '{print $NF}')
#boucle sur la liste des repertoires d'affaire du repertoire /offres
do
   SIZE=0
   nb_files=0
   nb_rep=$(find $REP_AFFAIRE -type d | wc -l)
   liste_files=$(find $REP_AFFAIRE -type f )
   for file in $(liste_files)
   do 
       let SIZE+=$(ls -l $file | awk '{print $5}')
       let nb_files+=1
   done
   echo "$REP_AFFAIRE  | $nb_rep | $nb_files  | $SIZE" >>out.txt
done
Il pourra etre utile de rediviser la taille par 1024 pour l'avoir en Ko. Tu peux egalement utiliser printf pour formater la sortie un peu mieux -->man printf
__________________
La science est ce que nous comprenons suffisamment bien pour l'expliquer à un ordinateur. L'art, c'est tout ce que nous faisons d'autre.
Donald E. Knuth

Dernière modification par KindPlayer ; 19/08/2008 à 12h05
KindPlayer est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/08/2008, 11h41   #3 (permalink)
Invité de passage
 
Date d'inscription: août 2008
Messages: 2
Par défaut

Merci pour ta réactivité
Je vais tester tout ça
Neenou est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Linux > Applications > Shell



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 18h07.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2008 www.developpez.com - Legal informations