petit_programe en bash

petit_programe en bash - Shell/Batch - Programmation

Marsh Posté le 15-03-2014 à 00:23:31    

Bonjour tous le monde,  
Voilà je viens sur ce forum pour vous demander un peu d'aide concernant un script,  
Le but de ce script est de chercher une chaîne de caractère dans une arborescence de fichier.
 voici le code source de mon script  

Code :
  1. #./sbin/bash
  2. for i in *
  3.         do 
  4.         if [  -z  `cat $i | grep int connect`  ]  note 1
  5.         then
  6.         echo `pwd` note 2
  7.         echo $i
  8.         fi 
  9.         cd $i 2>erreurs.txt && /home/baldr00/SClinux/recurls.sh&& cd ..
  10.         rm erreurs.txt 2> erreurs.txt || rm erreurs.txt note 3
  11.         done
  12.         cd ..


 
note 1 : voila ce test ne marche pas, en tout cas le programme pense qu'il est toujours vrai, le but de ce test est de savoir si dans le fichier concerné il y la chaine de caractère rechercher ici "int connect"
 
note 2 : ceci nous permet d'avoir le chemin pour regarder le fichier où la chaine de caractère a été trouvé,
 
note 3: Ces lignes un peu loufoque permet de progresser dans l’arborescence et de supprimer si il existe le fichier d'erreur renvoyé pas cd ( car on a essayé de cd un fichier)  
 
Voilà, merci d'avoir pris du temps d'avoir lut mon message ( bonne journée)  
 
 

Reply

Marsh Posté le 15-03-2014 à 00:23:31   

Reply

Marsh Posté le 15-03-2014 à 01:42:55    

Bonjour !
 
Pour la recherche récursive, le plus simple est de combiner find et xargs :  
 
find . -print | xargs grep 'int connect'
 
vous donnera la liste des fichiers qui contiennent la chaine (bien protéger l'espace entre int et connect pour que grep ne considère pas ça comme deux arguments.
 
Pour effacer les fichiers, a priori un | xargs rm -f devrait faire l'affaire.
 
Bonne continuation !

Reply

Marsh Posté le 15-03-2014 à 09:54:55    

Farian a écrit :

Bonjour !
 
Pour la recherche récursive, le plus simple est de combiner find et xargs :  
 
find . -print | xargs grep 'int connect'
 
vous donnera la liste des fichiers qui contiennent la chaine (bien protéger l'espace entre int et connect pour que grep ne considère pas ça comme deux arguments.
 
Pour effacer les fichiers, a priori un | xargs rm -f devrait faire l'affaire.
 
Bonne continuation !


il y a aussi une option -r dans grep qui fait ça, pas besoin de find


---------------
Aimer les femmes intelligentes est un plaisir de pédéraste. (Charles Baudelaire) - Vous vulgarisez :o (Jean-Kevin Dubois)
Reply

Marsh Posté le 15-03-2014 à 11:31:26    

Merci la ligne j'ai enfin put trouver ce que je cherchais =)  
Bonne journée.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed