#1 Le 20/09/2018, à 17:28
- Piteur
Recherche d'une chaîne dans un ensemble de fichiers
Bonjour.
J'ai eu à utiliser récemment la commande suivante, notée "en aveugle" dans l'une de mes petites fiches pratiques :
sudo find . -type f -exec grep TexteRecherche {} \;
J'étais à la recherche d'un lanceur présent dans le Menu Whisler (in Xubuntu 16.04 LTS), ne fonctionnant pas, ET parfaitement invisible avec Alacarte ou Menulibre, dont je savais a priori qu'il devait contenir une chaîne XYZ, c'est à dire le nom affiché (j'ai fait : sudo find . -type f -exec grep XYZ {} \;). J'ai procédé de proche en proche : en partant de la racine / et en arrivant finalement au dossier où se trouvait ce "foutu" lanceur à la fois inopérant et "invisible" pour les logiciels d'édition de menu que je connais.
J'ai procédé de proche en proche (du dossier-racine au dossier contenant le fichier repéré) car le résultat de la commande m'indique que la chaîne a été trouvée dans le dossier où je me trouve (ou ses sous-dossiers), mais pas dans quel fichier. Il m'aurait été plus facile d'obtenir en affichage le nom (voire l'emplacement et le nom) du fichier qui avait été repéré. Mais je ne sais pas comment écrire la commande qu'il faut pour cela : quelqu'un saurait-il me le dire (et éventuellement, m'expliquer sa proposition) ?
Bref, comment formuler en ligne de commande la requête : quel fichier, avec son chemin, contient telle chaîne de caractères dans le dossier en cours et ses sous-dossiers ?
Merci beaucoup.
Dernière modification par Piteur (Le 20/09/2018, à 17:31)
Newbie parfait avec (x)Ubuntu : soyez patient(e). Grand merci !
PC de bureau - Carte MSI B150M PRO-VDH - Core I5 6500 - Ram 16 Go - Windows 10 Famille / Xubuntu 18.04.5 LTS (dual boot par Grub)
Acer Aspire 5733Z - Linux Mint 20 (XFCE)
AsusPro P2520LA - Xubuntu 20.04 LTS
Hors ligne
#2 Le 20/09/2018, à 17:34
- pingouinux
Re : Recherche d'une chaîne dans un ensemble de fichiers
Bonjour,
Si j'ai bien compris ce que tu veux, essaye :
sudo find . -type f -exec grep TexteRecherche {} \; -print
Hors ligne
#3 Le 20/09/2018, à 18:08
- Postmortem
Re : Recherche d'une chaîne dans un ensemble de fichiers
Salut,
grep suffit, enfin, si c'est GNU grep :
sudo grep -r 'TexteRecherche' /
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#4 Le 20/09/2018, à 18:45
- diesel
Re : Recherche d'une chaîne dans un ensemble de fichiers
J'aurais tendance à proposer :
sudo grep -r -l 'TexteRecherche' /
Amicalement.
Jean-Marie
Je déteste qu'on cherche à me faire passer pour un con, j'y arrive déjà très bien tout seul.
Le mort, il sait pas qu'il est mort ; c'est pour les autres que c'est dur.................... Pour les cons, c'est pareil.
Hors ligne
#5 Le 20/09/2018, à 19:05
- pingouinux
Re : Recherche d'une chaîne dans un ensemble de fichiers
@Postmortem et diesel83140 : Vous avez bien sûr raison, je n'y pense jamais à ce grep -r…
Hors ligne
#6 Le 20/09/2018, à 20:06
- Postmortem
Re : Recherche d'une chaîne dans un ensemble de fichiers
Sinon, si on repart de la commande du début, on peut plutôt faire ça :
sudo find . -type f -exec grep TexteRecherche {} +
Contrairement à la version avec "\;", grep ne sera pas appelé une fois par fichier. Et du coup, il affichera le nom du fichier où la chaîne a été trouvé, en plus de la ligne contenant cette chaîne.
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#7 Le 21/09/2018, à 19:56
- grigouille
Re : Recherche d'une chaîne dans un ensemble de fichiers
Autre variante :
sudo find . -type f | xargs grep TexteRecherche
Debian (xfce) 12
HP LaserJet M1132 MFP
Hors ligne