IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Shell script pour compter le nombre de fichiers par extension


Sujet :

Shell et commandes GNU

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut Shell script pour compter le nombre de fichiers par extension
    je dois faire un script qui doit compter le nombre de fichiers (du répertoire courant et de ses sous répertoires) par extension mais j'ai pas des idées. vous pouvez m'aider svp? merci

  2. #2
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -lRrt | grep "\.ext" | wc -l
    pourquoi faire un script

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par frp31 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -lRrt | grep "\.ext" | wc -l
    pourquoi faire un script
    ouais mais je dois faire un script pour compter le nombre de fichiers par extension. exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    3 exe
    2 jpg
    5 pnm
    1 txt, etc

  4. #4
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    pareil suffit de le mettre dans une boucle et d'ameliorer l'affichage avec un echo

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    pour tout (lister fichier | couper extention | unique) 
    faire
    lister les fichier de cette extentions et les compter
    done
    c'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ggm(root/root)[GCXW]/xplt/nx/bn>for i in $(ls -lrtR *.* | cut -d"." -f2 | sort -u ) ; do echo "----$i----\c" ; ls -lrtR *$i 2> /dev/null | wc -l | grep -v 0;  done              
    ----GP----         1
    ----ksh----         7
    ----sh----        32
    ggm(root/root)[GCXW]/xplt/nx/bn>
    ne pas oublier de décompter les fichiers sans extensions (grep -v 0)

    pour améliorer tu peux bien sur garantir de compter que des fichiers et pas de repertoires ou liens ou tout ce que tu veux dans la boucle bien sur....
    tu peux faire la meme chose dans un script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #!/bin/ksh
    for i in $(ls -lrtR *.* | cut -d"." -f2 | sort -u ) 
    do 
       echo "----$i----\c" 
       ls -lrtR *$i 2> /dev/null | wc -l | grep -v 0
    done      
    exit $?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    @frp31 merci beaucoup mais .... il ma compte que les fichiers du directeur courant et il m'affiche le nb de fichiers sur une autre ligne (

  6. #6
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    le repertoire courrant c'est pas possible si tu mets R dnas les options de ls

    sur une autre ligne c'est possible si ton shell n'interprete pas le "\c"

    la c'est du ksh pas du bash donc il peut y avoir des petites differences.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    voila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    linux-jqe6:~/Desktop/andrei # ./script
    jpg ---\c
           3
    txt ---\c
           2

  8. #8
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    c'est bien ce que je disais ton \c n'est pas interprete mais affiche

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    et \c permet de faire quoi sur ksh ? d'afficher le nb de fichiers sur la mme ligne? peut-etre je peux trouver la solution ...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    j'ai trouve la solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i in $(ls -lrtR *.* | cut -d"." -f2 | sort -u ) 
    do 
       echo "----$i----\c" 
       ls -lrtR *$i 2> /dev/null | wc -l | grep -v 0
    done      
    exit $?
    mais il affiche toujours le nombre de fichiers pour le directeur courant et pas pour le directeur courant & les sous-directeurs

  11. #11
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Quelqu'un peut m'expliquer cette commande en détaille SVP SVP SVP , je suis novice en bash et j'ai besoin de la comprendre .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -lRrt | grep "\.java" | wc -l
    Que fait lRrt et grep?
    et mrc.

  12. #12
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    bon c'est sans doute pas la meilleure et encore moins la plus lisible des solutions mais for fun un combo find+perl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f | perl -F"\." -lane '$tab{$F[-1]}++ if /\.[^.]{0,3}$/; END {foreach $k (sort {$tab{$b} <=> $tab{$a}} keys %tab) {print "$tab{$k}\t$k"}}'

  13. #13
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 258
    Points : 13 510
    Points
    13 510
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f -name "*.*"|awk -F. '{a[$NF]++;} END{for (i in a) print a[i],i;}'
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  14. #14
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 439
    Points
    19 439
    Par défaut
    heu, les gars, ça vous dirait de répondre à la dernière question ?

    Citation Envoyé par Hayat Dh
    Que fait lRrt et grep?
    lRrt sont les options de la commande ls, dont tu trouveras la description dans le man ls.
    quant à grep, son man est accessible ici.

    qu'est-ce qui n'est pas clarifié par leur lecture ?
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 258
    Points : 13 510
    Points
    13 510
    Par défaut
    heu, les gars, ça vous dirait de répondre à la dernière question ?
    Non, car la question n'a rien à voir, ni avec la discussion, ni avec le premier posteur. Si elle veut, elle peut ouvrir sa propre discussion.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  16. #16
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 578
    Points : 19 439
    Points
    19 439
    Par défaut
    c'est, à tout petit détail près, la commande proposée par frp31 dans sa première réponse (deuxième message de la discussion).
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  17. #17
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    heu, les gars, ça vous dirait de répondre à la dernière question ?
    en règle générale non, je voulais en laisser un peu pour les autres
    quand j'ai vu "SVP SVP SVP " j'ai décroché instantanément en fait, j'aime pas donc je préfère m'abstenir que d'être désagréable, mais tu lui as répondu dans la foulée merci à toi

Discussions similaires

  1. [Batch] Utilisation d'une boucle pour compter le nombre de fichiers
    Par Med_be dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 15/08/2014, 23h23
  2. Réponses: 8
    Dernier message: 20/06/2012, 15h07
  3. [XL-2007] MACRO pour compter le nombre des fichiers sur le serveur FTP
    Par kinkichin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/07/2011, 18h09
  4. Réponses: 2
    Dernier message: 15/06/2009, 18h41
  5. Réponses: 7
    Dernier message: 10/10/2007, 19h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo