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 :

Application de recherche de texte dans tous les fichiers d'un répertoire


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut Application de recherche de texte dans tous les fichiers d'un répertoire
    Bonjour,

    je suis sous debian 7,

    je dois faire des recherche / remplacement dans 600 fichiers qui se trouvent dans différents répertoires.

    Quel logiciel me permet de faire cela, car nano et autres ne traitent qu'un seul fichier à la fois.

    Merci

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    une combinaison de plusieurs outils comme find, awk, sed feront tout à fait l'affaire.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut
    Merci

    donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -exec sed -i 's/chaine_recherchee/nouvelle_chaine/g' {} \;
    Mes questions :
    - cela remplace t il aussi les dans les noms de fichiers et répertoires car j'ai besoin de cela.
    - comment faire pour effectuer une recherche avec et sans CASSE : mon problème et que je dois respecter la casse présente ex si PrEqsdf alors je dois obtenir SuBqsdf

    si je fais un sed -e, j'obtiens bien la liste des lignes sans modification ?

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    378
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 378
    Points : 94
    Points
    94
    Par défaut
    J'ai tenté sur une copie de mon répertoire

    avec et sans sudo

    mais que cela soit avec -i ou -e le résultat n'est pas concluant

    avec sed -e j'obtiens des caractères bizarre
    avec sed -i : impossible d'éditer ...... ce n'est pas un fichier régulier


    Donc où je me suis trompé.


    et comment avoir dans un premier temps la liste des fichiers (avec si possible la ligne et son numéro où se trouve le matching, cele me permettra de contrôler par la suite)

    Ex de remplacement

    MONMOT -> NOUVEAUMOT
    MONmot -> NOUVEAUmot
    Monmot -> Nouveaumot
    ...

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 720
    Points : 31 037
    Points
    31 037
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par altair8080 Voir le message
    J'ai tenté sur une copie de mon répertoire

    avec et sans sudo
    Bonjour
    Connaitre le rôle des commandes évite de les utiliser pour rien. sudo exécute une commande sous le compte d'un autre. Si la commande est foireuse à l'origine, cela ne change rien.

    Citation Envoyé par altair8080 Voir le message
    mais que cela soit avec -i ou -e le résultat n'est pas concluant

    avec sed -e j'obtiens des caractères bizarre
    avec sed -i : impossible d'éditer ...... ce n'est pas un fichier régulier


    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -exec sed -i 's/chaine_recherchee/nouvelle_chaine/g' {} \;
    Donc où je me suis trompé.
    Ben je sais pas. Peut-être que t'as pas réfléchi (hé oui, là on ne peut rien pour toi) que ton find te retournait aussi des répertoires (et aussi les pipes et fichiers spéciaux et les sockets)...

    Citation Envoyé par altair8080 Voir le message
    et comment avoir dans un premier temps la liste des fichiers (avec si possible la ligne et son numéro où se trouve le matching, cele me permettra de contrôler par la suite)
    grep -ny

    Citation Envoyé par altair8080 Voir le message
    Ex de remplacement

    MONMOT -> NOUVEAUMOT
    MONmot -> NOUVEAUmot
    Monmot -> Nouveaumot
    ...
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e "s/MONMOT/NOUVEAUMOT/g" -e "s/MONmot/NOUVEAUmot/g" -e "s/Monmot/Nouveaumot/g"

    Citation Envoyé par altair8080 Voir le message
    ...car nano et autres ne traitent qu'un seul fichier à la fois.
    Rien n'interdit de faire du nano (ou autre) automatisé en script
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    find ... | while read f
    do
        nano "$f" << _EOT_ 1>/dev/null 2>&1
    commandes nano
    commandes nano
    commandes nano
    _EOT_
    done
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/09/2014, 16h09
  2. [Batch] Recherche récursive d'un mot dans tous les fichiers
    Par hackoofr dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 11/05/2012, 13h46
  3. recherche de texte dans toutes les tables d'une DATABASE
    Par pcouas dans le forum Langage SQL
    Réponses: 1
    Dernier message: 23/09/2010, 08h43
  4. Remplacer texte dans tous les membres d'un PDS
    Par RICO6101 dans le forum z/OS
    Réponses: 3
    Dernier message: 22/09/2010, 13h44
  5. Réponses: 2
    Dernier message: 07/09/2009, 21h14

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