233 votes

Comment trouver des fichiers avec un certain texte dans le Terminal

Je voudrais trouver tous les fichiers qui contiennent une certaine chaîne de texte. Comment faire dans le terminal ?

0 votes

Mais si vous voulez un résultat rapide, utilisez Spotlight. De même, si vous voulez trouver des fichiers qui ne contiennent pas nécessairement du texte directement dans le fichier, comme les fichiers PDF ou ODF.

0 votes

Bon conseil, mais dans mon cas, je ne suis pas sûr que les fichiers soient indexés puisqu'ils sont sur des pilotes réseau. Et aussi ce sont des fichiers xml appartenant à un programme particulier.

0 votes

Jetez un coup d'œil à unix.stackexchange.com/a/37932/213832 cette solution fonctionne bien

385voto

Ignacio Vazquez-Abrams Points 107432
grep -r 'text goes here' path_goes_here

1 votes

Je suggère un man grep pour découvrir toutes les merveilleuses options de grep

0 votes

Cela liste tous les fichiers qui existent dans le chemin et ajoute : No such file or directory J'essaie d'obtenir uniquement la liste des occurrences du texte. Comment obtenir cette liste ?

11 votes

Je l'ai : grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH OF PARENT] -s

38voto

user46046 Points 1051

Utiliser le projecteur

mdfind "text goes here"
mdfind -onlyin /home/user/Desktop -live "live update"

n'oubliez pas de regarder :

man mdfind

2 votes

Cela fonctionnera-t-il pour les fichiers que Spotlight n'indexe pas (c'est-à-dire les fichiers contenus dans des dossiers cachés, les fichiers de configuration du système, etc.)

0 votes

Grep ne semble pas pouvoir analyser les fichiers .xlsx, mais cette méthode a fonctionné sans problème. Un autre exemple simple : mdfind -onlyin . "searchtext"

22voto

Anant Gupta Points 311
  1. Par Ack

    brew install ack ack "text goes here"

  2. En trouvant

    find . |grep "text goes here"

  3. Par grep

    grep -RnslI "text goes here"

5voto

karthiks Points 151

Vous pouvez choisir l'une des options ci-dessous en fonction de vos goûts et de vos besoins. Supposons que vous ayez besoin de rechercher des fichiers contenant le texte - "async", de manière récursive dans le répertoire actuel, vous pouvez le faire de l'une des manières suivantes :

Utilisation de grep enter image description here

Utilisation de l'ack enter image description here

2voto

CP3O Points 129

La réponse d'Ignacio est excellente et m'a aidé à trouver les fichiers contenant un certain texte. Le seul problème auquel j'ai été confronté était qu'en exécutant cette commande, tous les fichiers étaient répertoriés, y compris un fichier pour lequel le motif n'apparaissait pas.

No such file or directory C'est ce que je vois à côté des fichiers qui ne contiennent pas le motif.

Si à la place vous ajoutez -s à la commande, comme dans : grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH DIRECTORY] -s est utilisé, il ne vous montrera que les fichiers qui contiennent le motif.

De même, si grep -nr "text pattern" ./ -s ; grep -nr "text pattern" [PATH OF DIRECTORY] -s est utilisée, elle imprime le fichier ainsi que le numéro de ligne et l'occurrence du motif.

Veuillez me corriger si ma compréhension est erronée.

Référence : Comment faire pour que grep n'affiche pas les erreurs 'No such file or directory' ?

0 votes

Une autre façon d'éviter ces ennuyeux Aucun fichier de ce type est d'envoyer stderr à null. grep ... 2>/dev/null . Cette solution fonctionne pour la plupart des programmes, puisqu'ils signalent les messages d'erreur sur le flux stderr, et non stdout. J'ai utilisé cette solution de nombreuses fois avec find comme il le dira Permission refusée pour de nombreux fichiers.

0 votes

(1)Si vous obtenez No such file or directory pour des fichiers qui existent, soit vous faites quelque chose de mal, soit votre système est défaillant.(2)Que fait le [PATH OF PARENT] ont à voir avec quoi que ce soit ?

0 votes

G-Man, j'ai modifié la réponse pour indiquer [PATH OF DIRECTORY] juste au cas où quelqu'un d'inconnu voudrait savoir pourquoi j'ai mis ./

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X