Commande find sur Ubuntu

Bonjour toute monde,
Quelqu'un pourrait, avec la commande "find", lister le nom des répertoires dont le premier caractère est un chiffre et comportant exactement 4 lettres minuscules ?

J'ai pensé à faire #find . -name "[0-9][a-z][a-z][a-z][a-z]"#
...et là je me suis rendu compte de deux erreurs de compréhension de ma part : D'abord le fait que l'énoncé ne sous-entende pas que le nom des fichiers doit impérativement comporter 5 caractères; Ensuite que les caractères qui y sont décrits ne doivent pas nécessairement être successifs.
J'ai alors tenté de me corriger avec : #find . -name "[0-9]*[a-z]*[a-z]*[a-z]*[a-z]*"#
...et là, une autre erreur fait surface : les "*" étant des jokers, peuvent remplacer des lettres minuscules ce qui augmenterait le nombre de lettres minuscules (alors que fixé à 4 dans l'énoncé)...

2 réponses

  1. salut,

    autant que je sache, les globs (correspondance de motifs en shell) ne permettent pas de compter les correspondances, ou de restreindre leur étendue.
    *
    tout ou rien
    ?
    un seul
    [ ]
    liste ou plage de caractères

    en regex, on peut limiter à un certain nombre ou à une fourchette le nombre de correspondances d'un motif (
    {n}
    , ou
    {n,m}
    ), ou exprimer qu'il y en a un (
    ?
    ), un ou aucun (
    *
    ), ou au moins un (
    +
    ).
    il faudrait en conséquence utiliser l'option
    -regex
    de
     find
    , et avec les classes [:digit:], [:upper:], [:lower:] énumérer toutes les combinaisons possibles parmi lesquelles les 4 minuscules suivent le nombre, sont plus ou moins consécutives et panachées avec les majuscules, et pour finir groupées à la fin du nom de fichier.

    bon courage !...
    1. D'accord je comprends...Il me semblait aussi que mon entreprise était impossible vu les outils que j'avais en ma possession.

      Merci beaucoup :)
    2. @lemzo618pourquoi "impossible" ?
      la commande
      find
      disponible sur ton système n'a pas d'option
      -regex
      ?
  2. Je vous propose :

    find . -name "[0-9][^a-z]*[a-z][^a-z]*[a-z][^a-z]*[a-z][^a-z]*[a-z][^a-z]*"
    1. hmm. le souci va persister : les astérisques sont toujours remplacés par tout ou rien.
      or, "tout" inclut les minuscules; cela ne restreint donc pas leur nombre.