Existe-t-il un moyen de dire ack
de rechercher uniquement du texte dans le dossier actuel? (ou spécifier un max-depth
niveau?) Et avec grep
?
Existe-t-il un moyen de dire ack
de rechercher uniquement du texte dans le dossier actuel? (ou spécifier un max-depth
niveau?) Et avec grep
?
Réponses:
Utiliser -n
pour no-recurse
:
$ ack -n foo
grep
n'est pas récursif par défaut et vous ne devez utiliser l' -r
indicateur que si vous souhaitez effectuer une recherche récursive.
Vous pouvez rechercher dans le répertoire actuel grep
comme suit:
$ grep -- foo *
Vous pouvez coupler la recherche avec l'argument -exec. Exemple:
find . -maxdepth 1 -exec grep foo {} \;
Cela peut être mis à l'échelle, c'est-à-dire -maxdepth 2
-maxdepth 1
) était évolutive. Par exemple -maxdepth 2
. Je ne sais pas comment décrire la modification que vous avez effectuée en tant que telle.
-maxdepth
) n'est pas une syntaxe portable / standard (uniquement GNU et certains BSD). En outre, il est inutile d'utiliser \;
ici (exécutez-en un grep
par fichier). Utilisez grep -H foo {} +
(spécifique à GNU) ou grep foo /dev/null {} +
(standard) pour vous assurer que le nom du fichier est toujours imprimé. L'équivalent standard -maxdepth 2
seraitfind . -path './*/*' -type d -prune -o -type f -exec ...
.
car vous ne donnez pas le -mindepth 1
) tandis que GNU grep
n'essaiera pas de lire les répertoires avec -r
(il revient sur eux). Vous pouvez ajouter un -d skip
à grep
( en supposant GNU grep) ou mieux ajouter ! -type d
à find
ou encore mieux -type f
(ou en -xtype f
supposant GNU find
) que vous ne voulez probablement pas grep
lire les fichiers non réguliers.
grep -Hin
cette approche pour que je puisse voir le nom de fichier et la ligne sur laquelle se trouve l'occurrence.
-n
de ne pas récuser du tout.