Communauté francophone des utilisateurs d'Ubuntu
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
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.
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 ![]()
Merci d'avance.
PS : j'avais fais une tentative un peu space qui ne faisait pas ce que je voulais, la voici :
cd /monrepertoire; find . -exec cat '{}' \; | wc -lDernière modification par grobs (Le 01/09/2007, à 13:31)
Hors ligne
C'est marrant, la solution correspond tout à fait à ta signature :
wc -l *
Hors ligne
Merci ! Bien essayé mais j'y avais déjà pensé
Il manque la récursivité :
cd rep/; wc -l * | grep total
Dernière modification par grobs (Le 01/09/2007, à 15:38)
Hors ligne
Ah, parce que tu as des sous-répertoires ...
Bon, ben on va se fendre d'un script ;
#!/bin/bash
res=0
IFS="
"
for f in `find . ! -type d`;
do
let " res += `wc -l $f | awk '{print $1}'` "
done
echo $resDernière modification par Yannick_LM (Le 01/09/2007, à 17:06)
Hors ligne
Merci beaucoup mais je ne sais pas utiliser les scripts (oui je sais faut que j'apprenne :p ). Je le met où ce script ?
Hors ligne
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.
Hors ligne
Merci, ya un petit bug :
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é
:
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 ![]()
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)
Hors ligne
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)
Hors ligne
Merci beaucoup pour tout ce que tu viens de m'apprendre ! ![]()
Hors ligne
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'