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

AIX Discussion :

commandes ls, find, grep


Sujet :

AIX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 33
    Points : 17
    Points
    17
    Par défaut commandes ls, find, grep
    Bonjour,

    J'ai 2 questions :
    1. La commande "ls !(*.txt)" (permettant de rechercher les fichiers ne se terminant pas par .txt) ne fonctionne pas s'il y a des sous-répertoires présents dans le répertoire de recherche. Y a-t-il une solution ?
    2. La commande "find ... | xargs grep toto" me renvoie bien ce que je veux (les fichiers contenant toto), mais je n'arrive pas à faire une suppression de tous ces fichiers car, quand on ajoute le "-exec rm {} \;" à la fin, il tente de faire le exec sur le "grep" et non sur le "find / grep" global.

    Sauriez-vous m'aider sur ces 2 points, SVP ?

    Merci par avance !

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Citation Envoyé par toto753 Voir le message
    1. La commande "ls !(*.txt)" (permettant de rechercher les fichiers ne se terminant pas par .txt) ne fonctionne pas s'il y a des sous-répertoires présents dans le répertoire de recherche. Y a-t-il une solution ?
    Je ne sais pas si cette option fonctionne en version POSIX :

    2. La commande "find ... | xargs grep toto" me renvoie bien ce que je veux (les fichiers contenant toto), mais je n'arrive pas à faire une suppression de tous ces fichiers car, quand on ajoute le "-exec rm {} \;" à la fin, il tente de faire le exec sur le "grep" et non sur le "find / grep" global.
    Tu peut tenter quelque chose comme (à adapter/corriger/etc) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for i in $(find ... | xargs grep toto); do rm -rf $i; done
    Cordialement,
    Idriss

  3. #3
    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,

    Pour le 1, peut être avec ls | grep -v '*.txt'.

    Pour le 2 essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ... -exec grep -l 'toto' {} \; | xargs rm -f
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  4. #4
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Points : 2 505
    Points
    2 505
    Par défaut
    1. Si tu veux parcourir les sous-répertoire, tu peux utiliser find. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -type f ! -name "*.txt"
    En passant, je ne sais pas si tu le réalises mais quand tu fais "ls !(*.txt)", c'est le shell qui expense le "!(*.txt)". La commande "ls" ne joue aucun rôle là dedans. En fait le shell appelles la commande ls, en lui donnant en argument la liste des fichiers qui matchent "!(*.txt)".

    2. Une solution t'as déjà été donnée. J'ajouterai juste que tu peux peut-être te passer du find, en utilisant grep -R.

Discussions similaires

  1. Recherche une commande spécifique du grep (AIX).
    Par Reivilo35 dans le forum Shell et commandes GNU
    Réponses: 16
    Dernier message: 02/02/2011, 11h08
  2. find + grep recherche de plusieurs mots dans des fichiers différents
    Par sakura.haruno dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 27/04/2010, 22h58
  3. find grep et espaces dans les noms de répertoire
    Par gifffftane dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 10/02/2009, 09h41
  4. find grep sed
    Par crazykangourou dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 04/09/2008, 11h11
  5. find / grep : comment diminuer la longueur d'une ligne en sortie
    Par gifffftane dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 11/04/2007, 15h10

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