Lorsque j'utilise la commande:
find . | xargs grep '...'
J'ai les mauvais matchs. J'essaie de rechercher la chaîne ...
dans tous les fichiers du dossier actuel.
Comme l'a dit Andy White, vous devez utiliser fgrep
afin de correspondre à plain .
, ou échappez aux points.
Vous devez donc écrire (-type f
est d'avoir uniquement les fichiers: vous ne voulez évidemment pas les répertoires.):
find . -type f | xargs fgrep '...'
ou si vous souhaitez toujours utiliser grep:
find . -type f | xargs grep '\.\.\.'
Et si vous ne voulez que le répertoire current et non ses sous-répertoires:
find . -maxdepth 1 -type f | xargs fgrep '...'
"." correspond à n'importe quel caractère, vous trouverez donc toutes les lignes contenant 3 caractères ou plus.
Vous pouvez soit échapper aux points, comme ceci:
find . | xargs grep '\.\.\.'
Ou vous pouvez utiliser fgrep, qui fait une correspondance littérale au lieu d'une correspondance regex:
find . | xargs fgrep '...'
(Certaines versions de grep acceptent également un indicateur -F qui les fait se comporter comme fgrep.)
@OP, si vous recherchez des fichiers contenant ...,
grep -R "\.\.\." *
Si vous tapez littéralement grep '...'
vous correspondrez à peu près à n'importe quelle chaîne. Je doute que vous tapiez actuellement '...'
pour votre commande grep, mais si vous l'êtes, le ...
correspondra à trois caractères quelconques.
Veuillez publier plus d'informations sur ce que vous recherchez, et peut-être que quelqu'un pourra vous aider davantage.
Si vous recherchez un nom de fichier correspondant, essayez:
find . -name "filename pattern"
ou
find . | grep "filename pattern"
Si vous cherchez à chercher fichiers qui correspondent (c'est-à-dire qu'il contient la chaîne grep)
find . | xargs grep "string pattern"
fonctionne bien. ou simplement:
grep "string pattern" -R *
Pour compléter la réponse de Jeremy, vous pouvez également essayer
find . -type f | xargs grep 'your_pattern'
ou
find . -type f -exec grep 'your_pattern' {} +
Qui est similaire à un xargs
Je pourrais ajouter: RTFM! Ou d'une manière plus polie: utilisation et abus de
man command
!