Comment rechercher par contenu sur Ubuntu

8

Je souhaite rechercher l'ensemble du serveur par contenu. (fichier texte)

Lorsque j'essaye grep -rl "text here", il se fige.

Comment feriez-vous?

Et combien de temps cela prend-il habituellement?

webnat0
la source

Réponses:

17

Vous devez spécifier un fichier lors de l'utilisation de la grepcommande. Avec la commande que vous utilisez, vous recherchez dans l'entrée standard ...

Essayez grep -r "test" directory.

ChrisJ
la source
7
find / -name "*.txt" -exec grep "text here" {} \; -print 2>/dev/null

Ce qui peut être expliqué dans le langage humain comme:

  1. trouver
  2. a partir de /
  3. dans tous les fichiers nommés * .txt (les guillemets doivent contourner l'interprétation du shell)
  4. avec les résultats obtenus, effectuez les opérations suivantes
  5. grep "tester ici"
  6. dans le fichier {}
  7. fin de l'exéc (\;) d'échappement fin de l'instruction
  8. imprimer les fichiers qui correspondent
  9. redirigez les messages d'erreur dans le récepteur (car vous pourriez ne pas être root, sinon faites simplement un sudo).
Alain Pannetier
la source
il dit "trouver: argument manquant à 'grep'"
webnat0
travaille ici. comment avez-vous remplacé "tester ici"?
Alain Pannetier
1
@Daeyun: Il n'y a qu'une seule barre oblique inverse.
pause jusqu'à nouvel ordre.
1
@Dennis. Cela dépend de votre langue maternelle. Au Japon et en Corée, il existe plusieurs jeux de caractères dans lesquels la barre oblique inversée est également rendue sous la forme du signe Yen ou du signe Wong (0x5c). Jetez également un œil à u + 20E5. Dans le passé, il y a eu plusieurs exploits dans IIS dans lesquels vous pouviez explorer le disque entier (où IIS avait sa racine) d'un PC simplement en mélangeant de vraies barres obliques et de fausses (autres équivalents Unicode convertis dans le plan ascii) et au moins une utilisant une superposition inversée de solidus.
Alain Pannetier
0

vous oubliez de spécifier le type de fichiers que vous souhaitez rechercher,
assurez-vous de vous connecter en tant que root

cd /
grep -rl "text here" *  > /tmp/match.txt

cela va prendre très longtemps, et vous pouvez collecter les résultats plus tard en vérifiant /tmp/match.txt

ajreal
la source
0

La commande suivante recherche tous les fichiers se terminant par .txt dans le répertoire de travail actuel et tous les sous-répertoires:

find . -type f -name '*.txt' -exec grep -Hn "text here" {} \;


la source