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 :

Afficher les fichiers qui contiennent des caractères accentués


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut Afficher les fichiers qui contiennent des caractères accentués
    Bonjour,
    Je cherche à afficher une liste de fichier qui contiennent des caractères accentués. Je m'explique, je liste un répertoire et ses sous répertoire et je veux afficher le nom des fichiers qui contiennent des caractères accentués.
    Du coup comme je ne les connais pas et que parfois ils ressortent avec des signes bizarre, je me dis je vais plutôt afficher tout les fichiers qui contiennent des caractères autre que [a-z][A-Z] .-_
    Mais je n'arrive pas à faire mon expression régulière...
    Vous pouvez m'aider ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R | grep ^([a-z] \.\-_[A-Z])+
    Merci.
    Jérôme

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jejeman Voir le message
    je me dis je vais plutôt afficher tout les fichiers qui contiennent des caractères autre que [a-z][A-Z] .-_
    ou, au contraire du contraire, ne pas afficher les fichiers qui ne contiennent que des caractères standard, avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R | egrep -v '^[A-Za-z._-]*$'
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R | egrep -v -x '[A-Za-z._-]*'
    Note: le '-' doit être le dernier de la bracket expression [...]

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    ou, au contraire du contraire, ne pas afficher les fichiers qui ne contiennent que des caractères standard
    Aussi...

    Et si je veux autoriser les caractères () ' espace
    est-ce qu'il faut les précéder d'un antislash ?
    Merci.
    Jérôme

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Euh... ne serait-il pas plus simple d'afficher uniquement les fichiers contenant des caractères accentués ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R | egrep -i '[éèàâêûîôüïöù]'
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Euh... ne serait-il pas plus simple d'afficher uniquement les fichiers contenant des caractères accentués ?
    J'y ai bien pensé mais par exemple le é s'affiche comme ça : é
    Et je te parle pas des autres caractères...
    Jérôme

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jejeman Voir le message
    Aussi...

    Et si je veux autoriser les caractères () ' espace
    est-ce qu'il faut les précéder d'un antislash ?
    Merci.
    Une bonne manière de savoir, c'est utiliser la programmation expérimentale!

    Sinon, dans une expression régulière, à l'intérieur de crochets, les caractères spéciaux sont:
    ^ et ] qui doivent être précédés d'un backslash ' \ '
    et - qui doit être le premier ou le dernier caractère

    Cependant, pour que la chaîne de caractères contient un quote, il faut le backslasher pour le shell (et non pour grep).

    Donc, pour les autres, pas de problème:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R | egrep -v -x '[-A-Za-z._( )\']*'
    ou bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls -R | egrep -v -x "[-A-Za-z._( )']*"
    )jack(
    PS: j'aimerais bien savoir qui a voté contre ma proposition précédente et pourquoi !?
    ça me permettrait peut-être d'apprendre quelque chose que je n'ai pas bien compris ?

  7. #7
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 546
    Points : 219
    Points
    219
    Par défaut
    Merci beaucoup !!!

    PS : j'ai fait pas mal de regex en perl, mais en shell à priori c'est légèrement différent....
    Jérôme

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par jejeman Voir le message
    PS : j'ai fait pas mal de regex en perl, mais en shell à priori c'est légèrement différent....
    Moi, personnellement, en ce qui me concerne, en mon nom propre, j'en ai fait en grep, sed et emacs... La gestion des parenthèses dans les groupes est rigolote:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo abacab | sed -e 's:\(a\|b\):c:g' # sous linux, mais ne marche pas sous AIX :(
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (re-search-forward "\\(a\\|b\\)")

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,
    Citation Envoyé par jack-ft Voir le message
    La gestion des parenthèses dans les groupes est rigolote:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo abacab | sed -e 's:\(a\|b\):c:g' # sous linux, mais ne marche pas sous AIX :(
    Avec sed les parenthèses sont inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ echo abacab | sed -e 's:a\|b:c:g' 
    cccccc
     
    $ echo abacab | sed -re 's:a|b:c:g' 
    cccccc
     
    $ echo abacab | sed -e 's:[ab]:c:g' # Le plus logique pour ce cas là
    cccccc
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,

    Avec sed les parenthèses sont inutiles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $ echo abacab | sed -e 's:a\|b:c:g' 
    cccccc
     
    $ echo abacab | sed -re 's:a|b:c:g' 
    cccccc
     
    $ echo abacab | sed -e 's:[ab]:c:g' # Le plus logique pour ce cas là
    cccccc
    Exact! Elles ne servent que si on veut mettre quelque chose devant ou derrière.

    Voici ce qu'on obtient sous AIX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ echo abacab | sed -e 's:\(a|b\):c:g' 
    abacab
     
    $ echo abacab | sed -e 's:a\|b:c:g'
    abacab
     
    $ echo abacab | sed -re 's:a|b:c:g'
    sed: illegal option -- r
    Usage:  sed [-n] [-u] Script [File ...]
            sed [-n] [-u] [-e Script] ... [-f Script_file] ... [File ...]
     
    $ echo abacab | sed -e 's:[ab]:c:g'
    cccccc
    C'est vachement commode pour faire du code portable !!!

Discussions similaires

  1. [KSH] Lister des fichiers qui contiennent des caractères particuliers
    Par Cj_Dal dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 17/05/2011, 18h18
  2. commande find: trouver les fichiers qui contiennent une chaine de caractère
    Par hammag dans le forum Administration système
    Réponses: 3
    Dernier message: 18/05/2008, 13h19
  3. Fichier qui contiennent des epaces
    Par Silverstone dans le forum C++
    Réponses: 3
    Dernier message: 16/07/2006, 23h06
  4. [Upload] Nom de fichier avec un/des caractères accentués ?
    Par Christophe Charron dans le forum Langage
    Réponses: 11
    Dernier message: 09/06/2006, 21h46
  5. supprimer les fichiers qui ont des mêmes noms
    Par manaboko dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2006, 09h09

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