Existe-t-il un moyen de dire ackde rechercher uniquement du texte dans le dossier actuel? (ou spécifier un max-depthniveau?) Et avec grep?
Existe-t-il un moyen de dire ackde rechercher uniquement du texte dans le dossier actuel? (ou spécifier un max-depthniveau?) Et avec grep?
Réponses:
Utiliser -npour no-recurse:
$ ack -n foo
grepn'est pas récursif par défaut et vous ne devez utiliser l' -rindicateur que si vous souhaitez effectuer une recherche récursive.
Vous pouvez rechercher dans le répertoire actuel grepcomme 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 greppar 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 2seraitfind . -path './*/*' -type d -prune -o -type f -exec ...
.car vous ne donnez pas le -mindepth 1) tandis que GNU grepn'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à findou encore mieux -type f(ou en -xtype fsupposant GNU find) que vous ne voulez probablement pas greplire les fichiers non réguliers.
grep -Hincette approche pour que je puisse voir le nom de fichier et la ligne sur laquelle se trouve l'occurrence.
-nde ne pas récuser du tout.