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 :

[bash] Lister fichiers dont la première lettre est entre a et e en minuscules


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut [bash] Lister fichiers dont la première lettre est entre a et e en minuscules
    Bonjour,

    j'ai un petit souci de listage de fichiers sur debian .

    Dans un dossier j'ai les fichiers suivants : Abricot ananas banane cerise poire Pomme raisin
    je voudrais lister les fichiers dont la première lettre est de a à e en minuscules seulement .

    si je fais celà : ls [a-e]* ma sortie donne Abricot ananas banane cerise

    il y a un fichier qui commence par une majuscule donc ce n'est pas bon .
    j'ai un peu cherché et celà viendrait du fait qu'avec certaines locales les lettres sont dans l'ordre aAbBcC.........zZ - je suis en UTF8
    donc de [a-e] équivaut à [aAbBcCdDeE]
    Je peux donc faire ls [abcde]* mais dans le cas d'un nombre de lettre plus grand ça ne serait pas très élégant .

    Voyez vous une autre solution pour donner et le range de lettres et sa caractéristique minuscule ?

    Merci d'avance pour vos idées :-)

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 692
    Par défaut
    Bonjour,

    Code BASH : Sélectionner tout - Visualiser dans une fenêtre à part
    shopt -s nullglob; printf '%s\n' {a..e}*
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 298
    Par défaut
    Bonjour

    ls ne s'utilise pas dans un script. On le remplace généralement par find.
    Le comportement que tu décris est dû à ls (à mon humble avis) car find ne se trompe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find -type f -maxdepth 1 -name '[a-e]*'

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    Merci pour vos réponses .
    En fait je débute l'apprentissage du shell et celà était proposé dans les exemples et exercices du premier chapitre ( mécanismes de base du shell )
    Je sais qu'il y a une étude de la commande printf un peu plus loin dans le livre . Pour la commande find je vais regarder son fonctionnement .

    je vais essayer vos propositions et en décrypter le fonctionnement .

    Je vous remercie, c'est sympa d'avoir répondu aussi vite . :-)

    PS : vo deux propositions fonctionnent, je n'ai plus qu'à décrypter, encore merci à vous

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 692
    Par défaut
    Citation Envoyé par Flodelarab
    Le comportement que tu décris est dû à ls
    en fait, c'est le shell qui effectue le développement, pas ls.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Par défaut
    re-bonjour ,

    En fait j'avais trouvé sur un forum en aglais que si je configurais une variable comme celà : LC_ALL=C
    Alors ma fonction ls [a-e]* fonctionne . C'est pour celà que je pensais à une histoire de locale .
    PAr contre je ne sais pas à quoi correspond cette variable.....

  7. #7
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 389
    Par défaut
    Bonjour,

    En fait, pour être plus précis, c'est le paramétrage de l'ordre de collation défini par la locale qui pose ce genre de problème, voici un exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ ls
    atiti  Atoto  btiti  Btoto  ctiti  Ctoto  dtiti  Dtoto  etiti  Etoto
    $ ls [a-e]*
    atiti  Atoto  btiti  Btoto  ctiti  Ctoto  dtiti  Dtoto  etiti
    $ A=$LC_COLLATE ; LC_COLLATE=C ; ls [a-e]* ; LC_COLLATE=$A
    atiti  btiti  ctiti  dtiti  etiti

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Batch] compter les fichiers dont les 5 premières lettres sont identiques
    Par jomel0609 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 10/01/2013, 13h11
  2. Réponses: 6
    Dernier message: 04/10/2010, 19h50
  3. lister fichiers d'un repertoire dont un mot est dans le contenu
    Par italiasky dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 22/02/2010, 18h45
  4. Réponses: 4
    Dernier message: 18/08/2006, 08h57
  5. [quel langage] sauvegarder fichier dont l'url est connu
    Par azerty_essai dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 28/03/2005, 13h14

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