ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

Annonce

Les Ubuntu-partys sont l'occasion pour beaucoup d'entre vous d'acquérir les goodies Ubuntu-fr faits par nos petites mains avec amour.
Pour tous les autres, fini le désespoir de les manquer wink Il est désormais possible de vous procurer l'objet de votre choix grâce à la boutique en ligne, commune à Framasoft et Ubuntu-fr. Vous pourrez déjà y trouver mugs, t-shirts et, bien sûr, les Framakey Ubuntu-fr Remix.

#1 Le 01/09/2007, à 13:25

[Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Bonjour à tous !

Je voudrai connaître le nombre de lignes cumulées de tous les fichiers d'un de mes dossiers. Comme je ne vais pas indiquer à la commande wc -l tous les fichiers un par vu qu'ils se trouvent être 1709 fichiers en tout dans ce dossier, je vous demande donc si vous auriez une petite idée à me proposer smile

Merci d'avance.

PS : j'avais fais une tentative un peu space qui ne faisait pas ce que je voulais, la voici :

Code:

cd /monrepertoire; find . -exec cat '{}' \; | wc -l

Dernière modification par grobs (Le 01/09/2007, à 13:31)


"Mieux vaut vérifier que les enceintes sont bien branchées avant de recompiler un noyau". (vieux proverbe de Debianneux)

Hors ligne

 

#2 Le 01/09/2007, à 14:21

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

C'est marrant, la solution correspond tout à fait à ta signature :

Code:

wc -l *

Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

 

#3 Le 01/09/2007, à 14:29

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Merci ! Bien essayé mais j'y avais déjà pensé wink Il manque la récursivité :

Code:

cd rep/; wc -l * | grep total

Dernière modification par grobs (Le 01/09/2007, à 15:38)


"Mieux vaut vérifier que les enceintes sont bien branchées avant de recompiler un noyau". (vieux proverbe de Debianneux)

Hors ligne

 

#4 Le 01/09/2007, à 14:53

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Ah, parce que tu as des sous-répertoires ...

Bon, ben on va se fendre d'un script ;

Code:

#!/bin/bash
res=0

IFS="
"

for f in `find . ! -type d`; 
do
let " res += `wc -l $f | awk '{print $1}'`  "
done
echo $res

Dernière modification par Yannick_LM (Le 01/09/2007, à 17:06)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

 

#5 Le 01/09/2007, à 15:36

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Merci beaucoup mais je ne sais pas utiliser les scripts (oui je sais faut que j'apprenne :p ). Je le met où ce script ?


"Mieux vaut vérifier que les enceintes sont bien branchées avant de recompiler un noyau". (vieux proverbe de Debianneux)

Hors ligne

 

#6 Le 01/09/2007, à 17:11

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Oups..
Bon, déjà, j'ai modifié le script en question ...

Ensuite, tu le copie/colle dans un fichier que tu appelles par exemple count.sh.
Ensuite, tu le rends exécutable avec chmod, ou click droit/propriétés.

Puis, tu vas dans le répertoire, tu tapes /chemin/vers/le/script/count.sh, et c'est bon.


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

 

#7 Le 01/09/2007, à 17:21

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Merci, ya un petit bug :

Code:

sudo /home/moi/Mes_Sites/compteur.sh 
Password:
wc: ./.gxine/socket: Aucun périphérique ou adresse
/home/moi/Mes_Sites/compteur.sh: line 9: let: res +=   : erreur de syntaxe : opérande attendu (error token is " ")
wc: ./.mozilla/firefox/llt2lz28.default/lock: Aucun fichier ou répertoire de ce type
/home/moi/Mes_Sites/compteur.sh: line 9: let: res +=   : erreur de syntaxe : opérande attendu (error token is " ")

C'est bon j'ai trouvé smile :

Code:

find . -type f -name "*.php5" | xargs cat | wc -l

Je voulais aussi qu'il ne prenne en compte que les fichiers portant l'extension php5 mais je me disais que c'était un détail wink
Il reste quand même une petite erreur c'est qu'il génère une erreur à chaque fois qu'il rencontre un dossier comportant un espace.

Sinon, quand j'ai des commandes de ce genre et que j'aimerai les réutiliser facilement par la suite, comment puis-je les intégrer dans script sh pour que je n'ai plus qu'à lancer la commande par la suite ?

Dernière modification par grobs (Le 01/09/2007, à 17:47)


"Mieux vaut vérifier que les enceintes sont bien branchées avant de recompiler un noyau". (vieux proverbe de Debianneux)

Hors ligne

 

#8 Le 01/09/2007, à 18:06

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Bon, content de voir que ça marche.
( Je reste perplexe devant le bug )

Sinon,pour intégrer tes commandes dans un script Bash, tu les copies et tu les colles, et puis c'est fini.
(bash EST le langage par défaut de ta console)

Sinon, je te recommande le IFS="
" (c'est pas une erreur de typo),qui corrige souvent les problème liés aux noms avec espaces.

Typiquement, le find te renvoie :
nom1
nom 2

Quand tu envoies ça à xargs, il sépare les noms de fichiers en utilisant $IFS,et par défaut, les espaces sont dedans, donc trois arguments : nom1, nom, et 2.

Si tu fixe IFS à "new line", le problème est résolu.

Je te recommande ce lien, si tu veux approfondir.



Enfin, tu peux jeter un coup d'œil du côté des options de find, ou de xargs, mais perso, je préfères faire avec un ch'tit script.

(Du genre : find -print0 ... | xargs -0 )

Dernière modification par Yannick_LM (Le 01/09/2007, à 18:12)


Trucs et astuces pour Vim
Ma web page  avec des trucs dessus ...

Hors ligne

 

#9 Le 01/09/2007, à 18:14

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Merci beaucoup pour tout ce que tu viens de m'apprendre ! smile


"Mieux vaut vérifier que les enceintes sont bien branchées avant de recompiler un noyau". (vieux proverbe de Debianneux)

Hors ligne

 

#10 Le 11/03/2009, à 14:45

ben1

Re: [Bash] Compter le nombre de lignes de tous les fichiers d'un dossier

Yannick_LM a écrit:

Sinon, je te recommande le IFS="
" (c'est pas une erreur de typo),qui corrige souvent les problème liés aux noms avec espaces.

Pour la lisibilité je recommande la syntaxe IFS=$'\n'

 

Pied de page du Forum

Propulsé par FluxBB
Style adapté par Ogcreation.fr.