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?
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"
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
Dans le répertoire actuel, vous pouvez utiliser Grep:
grep -irl root .