Forum Programmation.shell find....

Posté par  .
Étiquettes : aucune
0
28
fév.
2006
Bonjour,

J'essaie de compter le nombre de fichiers d'un certain type qui se trouvent dans un directory.

Par exemple, find . - iname "*.mp3" | wc -l me renvoit bien le nombre de fichiers de mp3 qui se trouvent dans le directory en question.

Maintenant, j'aimerais compter les fichiers mp3 et ogg. Je fais comment ?
J'ai essayé find . -iname "*.[ogg,mp3]" | wc -l ou find . -iname "*.mp3|*.ogg" | wc -l et encore d'autres variantes plus tordues les unes que les autres mais je n'y parviens pas. En fait, je ne sais pas quel "type" d'expression régulière il faut utiliser avec find.

Merci d'avance pour votre réponse....

François
  • # Sans expression régulière...

    Posté par  (site web personnel, Mastodon) . Évalué à 4.

    ... tu peux faire comme ca :

    find . -name "*.mp3" -or -name "*.ogg" | wc -l

    :)
    • [^] # Re: Sans expression régulière...

      Posté par  . Évalué à 3.

      Cool ça fonctionne.... Mais il n'existe pas une écriture plus "concise" ?
      Un vrai truc de geek quoi ! :-)
      • [^] # Re: Sans expression régulière...

        Posté par  . Évalué à 7.

        Les "vrais geeks" lisent les manpages.
        Et donc si tu avais agit en vrai geek tu aurais constaté l'existence de ce court paragraphe:

        -regex pattern
        File name matches regular expression pattern. This is a match
        on the whole path, not a search. For example, to match a file
        named `./fubar3', you can use the regular expression `.*bar.' or
        `.*b.*3', but not `b.*r3'.


        Et donc tu aurais pu écrire quelque chose dans ce gout là:

        [gco@gc]:/tmp/pwet% touch a.{plop,plip,plap}
        [gco@gc]:/tmp/pwet% cd ..
        [gco@gc]:/tmp% find -regex ".*\.pl[ao]p"
        ./pwet/a.plap
        ./pwet/a.plop
        [gco@gc]:/tmp%
  • # locate

    Posté par  . Évalué à 8.

    locate peut répondre à ton besoin en une seule ligne de commande :
    locate $PWD/*.{mp3,ogg} --count
    Il faut qu'il soit installé et que la base soit à jour.
    Le mieux reste encore de coller un updatedb dans un cron.
    Voilà, en espérant que ça aide.
    • [^] # Re: locate

      Posté par  . Évalué à 2.

      Merci
      Ca marche.....presque !
      En effet, il faudrait qu'il ignore la casse (case isensitive). En clair, qu'il compte les *.mp3, *.MP3, *.mP3, etc...

      En tout cas, merci.
      • [^] # Re: locate

        Posté par  . Évalué à 8.

        Bon, allé, parce que je suis content d'avoir "presque" trouvé, je te donne la solution complète....
        $PWD/*.{mp3,ogg} --count -i

        Sur ce... Bonne lecture des pages {info,man}...
        • [^] # Re: locate

          Posté par  . Évalué à 1.

          Merci pour ton aide.
          Et oui, promis, je vais lire les man pages.
          Je ne connaissais pas vraiment la commande locate.
          J'étais jusqu'à présent plutôt adepte du find.
      • [^] # Re: locate

        Posté par  (site web personnel) . Évalué à 0.

        oui mais bon, la faut pas pousser non plus, on t'a deja dit de lire les manpages!!!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.