#1 Le 19/06/2020, à 22:25
- gorosk
[RESOLU] recherche approfondie du contenu d'un fichier
Bonjour,
je souhaiterais savoir s'il existe une ligne de commande permettant d'identifier un fichier sur la base de son contenu.
Je vais mieux m'expliquer.
Si j'utilise la commande
find /home -iname *nomdefichier*
le terminal rend le/les fichiers nommés nomdefichier.
Or, imaginez que j'ai un fichier dont le nom m'échappe mais que je suis sûre et certaine qu'il contient, entre autre, l'expression "le père Noël".
Existe-t-il une ligne de commande permettant de retrouver le fichier tapant une partie de son contenu, dans mon exemple "le père Noêl"?
Merci,
Julie
Dernière modification par gorosk (Le 22/06/2020, à 08:57)
Hors ligne
#2 Le 19/06/2020, à 22:29
- Nuliel
Re : [RESOLU] recherche approfondie du contenu d'un fichier
Oui,
grep -R 'le père noel' ~
recherche récursivement dans le dossier personnel (~ , qui peut être changé pour autre chose) la chaîne 'le pere noel'
On peut aussi filtrer le retour pour n'afficher que le nom du fichier
Par contre ça peut être très long.
grep est un outil formidable
Dernière modification par Nuliel (Le 19/06/2020, à 22:33)
Hors ligne
#3 Le 20/06/2020, à 00:19
- kamaris
Re : [RESOLU] recherche approfondie du contenu d'un fichier
Petites précisions :
- l'option -R ira chercher récursivement y compris dans les liens symboliques, ce qui n'est en général pas voulu : utiliser -r dans ce cas ;
- grep est sensible à la casse par défaut : pour trouver « le père Noël », il faut mettre l'option -i ;
- à fortiori les caractères e, ë, et ê (utilisé aussi dans le message de gorosk) sont différents : pour tous les trouver, il faut utiliser la classe de caractères [=e=] (avec pour langue du terminal le français).
Au final, ça donnerait donc :
grep -ir 'le père no[[=e=]]l' ~
Mais si on est sûr de la typographie, on peut se contenter de
grep -r 'le père Noël' ~
Hors ligne
#4 Le 20/06/2020, à 01:35
- moko138
Re : [RESOLU] recherche approfondie du contenu d'un fichier
utiliser la classe de caractères [=e=] (avec pour langue du terminal le français).
grep -ir 'le père no[[=e=]]l' ~
"la classe de caractères", je ne connaissais pas : super !
Merci kamaris !
%NOINDEX%
Un utilitaire précieux : ncdu
Photo, mini-tutoriel : À la découverte de dcraw
Hors ligne
#5 Le 20/06/2020, à 01:53
- MicP
Re : [RESOLU] recherche approfondie du contenu d'un fichier
Bonjour
Hors ligne
#6 Le 20/06/2020, à 09:50
- kamaris
Re : [RESOLU] recherche approfondie du contenu d'un fichier
"la classe de caractères", je ne connaissais pas : super !
Merci kamaris !
De rien, mais précisément, il vaudrait mieux ne pas appeler ça une classe de caractères, pour ne pas faire la confusion avec les expressions du type [:alpha:] (= A-Za-z) ou [:alnum:] (= A-Za-z0-9), pour lesquelles ce terme est bien adapté.
Dans le cas de [=e=], il vaudrait mieux parler de classe d'équivalence (de caractères), dont « e » apparait comme le représentant « canonique », en tant qu'il est ascii.
Cf. wikipédia, dont je trouve que la page sur les regex est une bonne introduction et un bon aide-mémoire : https://fr.wikipedia.org/wiki/Expressio … t%C3%A8res
(le pire, c'est que j'y ai regardé hier, mais évidemment, j'ai fait l'erreur quand même )
Hors ligne
#7 Le 20/06/2020, à 11:07
- Hizoka
Re : [RESOLU] recherche approfondie du contenu d'un fichier
kamaris : Merci pour le [=e=] !! C'est génial !
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#8 Le 20/06/2020, à 12:49
- kamaris
Re : [RESOLU] recherche approfondie du contenu d'un fichier
Eh bien elles auront fait des heureux ces classes d'équivalence !
Dernière modification par kamaris (Le 20/06/2020, à 12:49)
Hors ligne
#9 Le 22/06/2020, à 08:56
- gorosk
Re : [RESOLU] recherche approfondie du contenu d'un fichier
Que dire...un grand merci à vous tous!
Julie
Hors ligne
#10 Le 22/06/2020, à 09:33
- FrancisFDZ
Re : [RESOLU] recherche approfondie du contenu d'un fichier
Bonjour,
Si on ne cherche que le nom des fichiers contenant une expression donnée, ne conviendrait-il pas d'utiliser l'option "-l"
grep -l "le père noël" *
Avec si besoin "-r" si la recherche est récursive (nonobstant les autres propositions, au demeurant excellentes,proposées par kamaris !)
-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]
Hors ligne