Rechercher : dans
Par :

Recherche récursive en UNIX

Dernière réponse le 6 déc 2007 à 19:09:58 bolbo, le 26 mai 2004 à 10:23:01 
 Signaler ce message aux modérateurs

Bonjour,

Bonjour,

Je cherche actuellement à faire n petit script permettant de rechercher une chaine de caractère dans l'ensemble des fichiers de mon serveur.

Avec

find . -name index.php -print
j'arrive a trouver les noms de fichiers, mais moi je souhaiterai trouver un mot dans ces fichiers.
Je pense que ca doi etre faisable avec des pipe , grep et find, mais je sais pas trop comment.


Il faudrait par exemple reussir a trouver une adresse mail dans l'ensemble des fichier, se trouvant dans divers répertoires et sous répertoires.

Merci d'avance.
Bolbo

Meilleures réponses pour « Recherche récursive en UNIX » dans :
Google - Recherche d'une expression exacte VoirLorsque l’on souhaite faire la recherche d’une expression exacte, il suffit de mettre cette expression entre guillemets. Exemple : "animal domestique" référencera uniquement les sites comportant l’expression "animal domestique".
Télécharger Toolbar Uninstaller VoirToolbar Uninstaller est un logiciel de l'éditeur decomputeur. Ce logiciel permet de désinstaller plus de 150 barres de recherche différentes, même si l'entrée n'est plus disponible via Ajout/Suppression de programmes. Il est recommandé de fermer...
UNIX - Les fichiers VoirIntroduction aux fichiers Unix Sous les systèmes UNIX tout élément est représenté sous forme de fichier. L'ensemble des fichiers est architecturé autour d'une unique arborescence dont la base, appelée racine, est notée «/». Types de...

1

Fredish, le 26 mai 2004 à 11:39:19
  • +2

Tu voudrais quoi en sortie? L'adresse email ou le nom des fichiers contenant cette adresse email?

Parce que si c'est juste le nom des fichiers, tu fais:

grep -r email@email /


Sinon ca risque d'être un peu plus complexe; je vais essayer de m'y coller. Asevere va certainement pouvoir te donner une réponse, en tout cas.

Répondre à Fredish

2

bolbo, le 26 mai 2004 à 12:02:18
  • +1

Merci de ta réponse.
J'ai essayé le code que tu m'as donné,

grep -rn chaine_a_trouver *
et ca marche bien.

Maintenant, je voudrais savoir si c'est possible de faire un script qui remplace les occurences de la chaine chaine_a_trouver par une chaine new_chaine?

Le but c'est surtout de pouvoir modifier des adresses maill sur tous les sites web que je gère, sans avoir a editer un par un les fichiers.
Merci

Bolbo

Répondre à bolbo

3

hyma, le 26 mai 2004 à 12:46:55

Penche toi sur AWK

Répondre à hyma

4

Fredish, le 26 mai 2004 à 13:24:05

Quand je disais: " L'adresse email ou le nom des fichiers contenant cette adresse email?", c'etait l'adresse email et les noms de fichiers.

Pour ta deuxième question, je vois pas. Je connais pas awk. Je sais qu'on peut le faire sous vi, avec un seul fichier; mais dans plusieurs, il faudrait un autre outil que je ne connais pas.

Répondre à Fredish

5

bolbo, le 26 mai 2004 à 13:59:32

Ok; merci beaucoup.
Je vais approfondir avec AWK.

Merci

Répondre à bolbo

6

 vanjo, le 6 déc 2007 à 19:09:58
  • +1

Et voilà la solution :

find / -name "*" -exec grep -l mail {} \; 2>/dev/null

Le / pour la racine de ton serveur
Le "*" pour tous les fichiers de ton serveur
mail = la chaine de caractéres à rechercher

Tu peux faire la commande également sans le -l

find / -name "*" -exec grep mail {} \; 2>/dev/null

Avec un peu de retard....

Répondre à vanjo