L'utilisation de grep pour rechercher des fichiers fournis par trouver: ce qui est mal à trouver . | xargs grep '...'?
Lorsque j'utilise la commande:
find . | xargs grep '...'
- Je obtenir le mauvais matchs. Je suis en train de rechercher la chaîne ...
dans tous les fichiers dans le dossier actuel.
- avez-vous d'autres exemples ?
- alors tout d'abord, vous devez apprendre à poser la question correctement. techniquement, il n'y a rien de mal à cela. la question est de savoir ce que vous voulez faire. décrire correctement et clairement
- voulez-vous dire, ce que je reçois comme réponse?
- Êtes-vous sûr que grep -R n'est pas ce que vous cherchez?
- Je vous félicite de votre tact.
- dans le dossier actuel je recherche la chaîne "..." dans tous les fichiers.
- Inclus les regex balise afin de refléter le problème
- J'ai vraiment juste de remplacer "..." avec "blah blah blah" dans ma tête. Oh bien.
- sont des gens de vote pour que ce soit sur serverfault au lieu de super-utilisateur?
Vous devez vous connecter pour publier un commentaire.
Comme Andy White a dit, vous devez utiliser
fgrep
afin de correspondre à de simples.
, ou d'échapper à la stratégie dots.Donc, vous devez écrire (
-type f
est d'avoir seulement les fichiers : manifestement, vous ne voulez pas les répertoires.) :ou si vous voulez toujours utiliser grep :
Et si vous voulez seulement le actuel répertoire et non pas ses sous-répertoires :
grep -F '...'
devrait fonctionner tout aussi biengunzip
au lieu degzip -d
). Juste une question de goût et d'habitude.fgrep
etegrep
ont été obsolète à partir de la norme POSIX. Aussi, à l'aide degrep
à fond, on devrait être utilisé à l'aide des options de toute façon. Néanmoins, il reste encore subjective de ce qu'il faut utiliser.'.' correspond à tout caractère, de sorte que vous allez être de trouver toutes les lignes qui contiennent 3 ou plus de caractères.
Vous pouvez échapper les points, comme ceci:
Ou vous pouvez utiliser fgrep, qui est un littéral de match à la place d'une regex match:
(Certaines versions de grep aussi accepter une option-F qui les fait se comporter comme fgrep.)
@OP, si vous êtes à la recherche pour les fichiers qui contiennent ...,
Si vous êtes littéralement en tapant
grep '...'
vous paierez juste au sujet de n'importe quelle chaîne. Je doute que vous êtes en train de taper'...'
pour votre commande grep, mais si vous l'êtes, le...
correspondra à tous les trois caractères.S'il vous plaît poster plus d'info sur ce que vous êtes à la recherche pour, et peut-être que quelqu'un peut vous aider plus.
Si vous êtes à la recherche d'un nom de fichier qui correspond, essayez de:
ou
Si votre recherche pour la recherche de fichiers qui correspondent (c'est à dire qu'il contient le grep string)
fonctionne très bien. ou tout simplement:
Pour compléter Jeremy réponse, vous pouvez également essayer de
ou
Qui est similaire à un xargs
Je pourrais ajouter : RTFM ! De manière polie : utiliser & abus de
!