Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

:P

je fais un grep de ce style:

grep cequejecherche */*.c

 

G en résultat:

arg list too long

 

je sais qu'il y a moyen de "ruser" et de le "forcer" a me sortir les résultats... klk1 connait?

Posté(e)
qu'est ce que tu entends par : */*.c ??????

 

Tu veux une recherche dans les *.c des sous-repertoires ?

 

Automne

Ben vi...

je suis sur / par exemple, moi je veux une recherche ds tout les *.c contenu ds les repertoires de /

 

exemple:

suis ds /test/ et qd je fais ll g

truc1/

truc2/

truc3/

truc4/

 

Je veux faire un grep qui cherche ds les repertoires truc1,2,3,4...

je ne sais aps si je me suis bien fais comprendre...

svt ca marche, ms la y a trop de résultats...

Posté(e)

Ok je vois. Tu peux faire ca avec un peu de BASH. Ca devrait fonctionner.

 


for i in `find -type d -maxdepth 1`

do

   echo $i

   grep cequejecherche $i/*.c

done

 

maxdepth ---> donne la profondeur de la recherche. La ca ne cherche que dans les sous-repertoires directs, non dans les sous-sous-repertoires. Si tu ne veux pas de limitation, supprime le -maxdepth 1.

 

Tu fais attention car la commande find est ecrite à l'intérieur de cotes inversées (ALTGR + 7 sur clavier francais), pas de cotes normales.

 

Automne

Posté(e)

ouh la!!!du bash, va falloir que je m'y remette... comment on fait déjà pour faire une fonction bash avec un parametre?

Posté(e)

Hehe c'est vrai que ca s'oublie vite ce genre de conneries.

 

Pour les parametres :

$# : donne le nombre de paramètres

$1, $2, ... $9 : donne les paramètres dans l'ordre

 

Perso je me suis fais une petite commande comme cela :


#!/bin/bash



if [ ! $# -eq 2 ]; then

   echo USAGE : rgrep pattern type_of_files

   exit

fi



for i in `find -type d -maxdepth 1`

do

   echo $i

   grep $1 $i/$2

done

 

Au fait, tu n'oublies pas le 'chmod +x nomdufichierbash' si tu veux que ca s'execute :P

 

Automne

Posté(e)

Merchi!!! :P

ms y a un bug, il me sort:

 

'fi' unexpected
Posté(e)

Heuu si ca doit marcher. Je viens de le tester et ca fonctionne chez moi.

 

Tu as fait comment pour creer ton batch ? Copier/Coller ou recopie a la main ?

Parce que le bash est assez ... comment dire ... rigoureux question syntaxe.

 


#!/bin/bash



function printUsage() {

   echo 'USAGE : rgrep options pattern'

   echo 'OPTIONS : '

   echo '  --filetype OR -P : give a file type (default = *)'

   echo '  --depth OR -D : give a directory depth for search (default = no restriction)'

   echo 'PATTERN : '

   echo '  it is a grep search pattern'

}



gotpattern=0;

ftype='';

depth='';



while [ $# -gt 0 ]; do

 case $1 in

   --filetype|-F)

      shift

      ftype=$1

      shift

     ;;

   --depth|-D)

      shift

      depth='-maxdepth '$1

      shift

     ;;

    *)

      pattern=$1

      gotpattern=1

      shift

     ;;

 esac

done



if [ $gotpattern -eq  0 ]; then

   printUsage

   exit 1

fi



echo FileType : $ftype

echo Pattern : $pattern

echo Depth : $depth



for i in `find -type d $depth`

do

   echo [$i]

   if [ -z "$ftype" ]; then

       grep -s $pattern $i/*

   else

       grep -s $pattern $i/$ftype

   fi

done

exit 0

 

J'en ai fait une nouvelle version un peu plus evoluée. Et elle fonctionne chez moi.

 

Automne

Posté(e)

Je testerai tout ca au boulot...

ce que je ne t pas présicé, c que je suis sous HP-UNIX... y a peut etre des variantes ds le batch...

Rejoindre la conversation

Vous publiez en tant qu’invité. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...