Question 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 feriez-vous cela dans le Terminal?


123
2017-07-13 09:42


origine


Si vous voulez un résultat rapide, utilisez Spotlight. Aussi, si vous souhaitez rechercher des fichiers qui ne stockent pas nécessairement du texte directement dans le fichier, tel que PDF ou ODF. - Joey
Bon conseil, mais dans mon cas, je ne suis pas sûr que les fichiers soient indexés car ils sont sur des pilotes réseau. Et ce sont aussi des fichiers XML appartenant à un programme particulier. - Svish
Jeter un coup d'œil à unix.stackexchange.com/a/37932/213832 cette solution fonctionne bien - boyd4715


Réponses:


grep -r 'text goes here' path_goes_here

224
2017-07-13 09:47



Je suggère un man grep pour découvrir toutes les merveilleuses options de grep - Ludovic Kuty
Cela répertorie tous les fichiers existant dans le chemin et ajoute: No such file or directory  J'essaie d'obtenir juste la liste des occurrences de texte. Comment pouvons-nous obtenir cette liste? - CP3O
Je l'ai: grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH OF PARENT] -s - CP3O


utiliser le projecteur

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

N'oubliez pas de regarder:

man mdfind

23
2017-08-12 22:38



Est-ce que ce travail pour les fichiers que Spotlight ne indexe pas (c.-à-d. Les fichiers dans les dossiers cachés, les fichiers de configuration du système, etc.)? - Peter Berg
Grep ne semble pas analyser les fichiers .xlsx, mais cela a bien fonctionné. Un autre exemple simple: mdfind -onlyin. "texte de recherche" - FvD


  1. À travers Ack

brew install ack ack "text goes here"

  1. À travers trouver

find . |grep "text goes here"

  1. À travers grep

grep -RnslI "text goes here"


7
2018-03-03 14:07





Vous pouvez choisir l'un des éléments ci-dessous en fonction de vos goûts et de vos besoins. En supposant que vous ayez besoin de rechercher des fichiers contenant du texte - "async", récursivement dans le répertoire courant, vous pouvez le faire de l'une des manières suivantes:

Utiliser grep enter image description here

En utilisant ack enter image description here


1
2018-06-01 08:00





La réponse d'Ignacio est géniale et m'a aidé à trouver les fichiers contenant certains textes. Le seul problème auquel je faisais face était que lors de l'exécution de cette commande, tous les fichiers seraient répertoriés, y compris ceux pour lesquels le modèle 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 au contraire vous ajoutez -s à la commande, comme dans: grep -lr "text pattern" ./ -s ; grep -lr "text pattern" [PATH DIRECTORY] -s est utilisé, il vous montrera seulement quels fichiers contiennent le motif.

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

S'il vous plaît corrigez-moi si ma compréhension est fausse.

Référence: Comment est-ce que grep ne peut pas imprimer les erreurs "Pas de fichier ou répertoire"?


1
2018-06-01 15:27



Une autre façon d'éviter ces embêtants Ce fichier n'existe pas erreurs, est de conduire stderr à null. grep ... 2>/dev/null. Cette solution fonctionne pour la plupart des programmes, car ils signalent des messages d'erreur sur le flux stderr, pas sur stdout. J'ai utilisé cette solution plusieurs fois avec findcomme on dit Permission refusée pour beaucoup de fichiers. - jpaugh
(1) Si vous obtenez No such file or directory messages pour les fichiers qui existent, soit vous faites quelque chose de mal, soit votre système est cassé. (2) Qu'est-ce que [PATH OF PARENT] avoir à faire avec quelque chose? - G-Man
@ G-Man J'ai édité la réponse pour montrer [PATH OF DIRECTORY] juste au cas où quelqu'un inconnu voulait savoir pourquoi j'avais mis ./ - CP3O
@ G-Man J'utilise un mac pas Ubuntu, pas sûr de savoir comment mon système serait cassé, j'ai à peine fait quelque chose pour le moment. - CP3O