BUT : trouver les fichiers contenant une chaîne alphanumérique
Méthode avec « find »
find . | xargs grep {chaine} -sl
Méthode avec « grep »
grep -rli {chaine} .
Exemples :
Nous avons créer deux fichiers clients pour faire notre test
Un fichier clients-2020.txt qui contient :
Goland 09/06/20 \ Prospect Salist 10/08/20 \ Prospect \ Client Trucks 20/12/20 \ Prospect
Et un fichier clients-2021.txt qui contient :
Hermat 20/02/21 \ Prospect Appres 12/12/21 \ Prospect \ Client
Recherchons les fichiers contenant la chaîne ‘Salist’
bzg@uc:~/Documents$ find . | xargs grep Salist -sl ./clients-2020.txt bzg@uc:~/Documents$ grep -rli Salist . ./clients-2020.txt bzg@uc:~/Documents$ grep -rli 'Salist' . ./clients-2020.txt bzg@uc:~/Documents$ grep -rli "Salist" . ./clients-2020.txt
La chaîne ‘Salist’ étant simple et sans caractère système, nous pouvons écrire cette chaîne sans délimiteur ou avec les apostrophes simples ou doubles, il n’y aura aucune différence
Recherchons les clients ou prospects de ‘2020’
bzg@uc:~/Documents$ find . | xargs grep "20" -sl ./clients-2021.txt ./clients-2020.txt
Nous constatons que les fichiers 2020 et 2021 sont retournées, en effet la recherche sur « 20 » renvoi aussi le fichier contenant ’20/02/21′ puis 20 s’y trouve
Nous devons donc faire une recherche sur ‘/20’
bzg@uc:~/Documents$ find . | xargs grep "/20" -sl ./clients-2020.txt
Recherchons les fichiers contenants des clients donc avec la chaîne ‘\ Client’, il faut impérativement délimiter la chaîne à cause de l’espace et échapper le caractère système ‘\’ en le faisant précéder d’un autre caractère ‘\’ soit la chaîne ‘\\ Client’
bzg@uc:~/Documents$ find . | xargs grep '\\ Client' -sl ./clients-2021.txt ./clients-2020.txt
En résumé : on peut rechercher les fichiers contenant une chaîne en utilisant ‘find’ et / ou ‘grep’