web-dev-qa-db-fra.com

Comment rechercher un mot dans tout le contenu d'un répertoire de Linux

besoin de rechercher quelque chose dans tout le contenu

J'essaie:

find . | xargs grep Word

Je reçois une erreur:

xargs: citation non déterminée

Comment y parvenir?

15
xyz

xargs vous attend entrant dans un format qu'aucune autre commande ne produit, il est donc difficile d'utiliser efficacement. Ce qui ne va pas ici, c'est que vous avez un fichier dont le nom doit être cité en entrée sur xargs (contenant probablement un ').

Si votre Grep supporte le -r ou -R Option pour la recherche récursive, utilisez-la.

grep -r Word .

Sinon, utilisez le -exec primaire de find. C'est la façon habituelle d'atteindre le même effet que xargs, sauf sans contraintes sur les noms de fichiers. Des versions raisonnablement récentes de find vous permettent de regrouper plusieurs fichiers dans un seul appel à la commande auxiliaire. Qui passe /dev/null à grep garantit qu'il affichera le nom de fichier devant chaque match, même si cela se trouve être appelé sur un seul fichier.

find . -type f -exec grep Word /dev/null {} +

Les versions plus anciennes de find (sur les systèmes plus anciens ou openbsd, tels que Busybox) ne peuvent appeler la commande auxiliaire sur un fichier à la fois.

find . -type f -exec grep Word /dev/null {} \;

Certaines versions de find et xargs ont des extensions qui les permettent de communiquer correctement, à l'aide des caractères nuls pour séparer les noms de fichiers afin qu'aucun cite n'est requis. Ces jours-ci, seule OpenBSD a cette fonctionnalité sans avoir -exec … {} +.

find . -type f -print0 | xargs -0 grep Word /dev/null

Je suppose que tu veux dire la première option

grep récursif, pour la recherche de contenu à l'intérieur des fichiers

grep -R "content_to_search" /path/to/directory

ls récursif, pour rechercher des fichiers qui correspondent

ls -lR | grep "your_search"
12
Feida Kila

Si vous avez le GNU outils (que vous faites si la balise Linux est exacte), vous pouvez utiliser -print0 et -0 Pour contourner les problèmes de citation habituels:

find . -type f -print0 | xargs -0 grep Word
2
mu is too short

Il y a aussi ACK , il est conçu pour sauter des répertoires spéciaux comme .svn, .git et autres choses de ce genre. C'est un outil quotidien pour les développeurs.

C'est assez proche de Grep pour les commutateurs communs.

Ex. :

ack -r string .

Emballer ack-grep sur Debian & Debian aime.

0
Gilles Quenot

Dans le répertoire actuel, vous pouvez utiliser Grep:

 grep -irl root .
0
Ranjithkumar T