Kann ich festlegen ack, dass nur im aktuellen Ordner nach Text gesucht wird? (oder ein max-depthLevel angeben ?) Und mit grep?
Kann ich festlegen ack, dass nur im aktuellen Ordner nach Text gesucht wird? (oder ein max-depthLevel angeben ?) Und mit grep?
Antworten:
Verwenden Sie -nfür no-recurse:
$ ack -n foo
grep ist standardmäßig nicht rekursiv und Sie sollten das -r Flag nur verwenden, wenn Sie eine rekursive Suche wünschen.
Sie können das aktuelle Verzeichnis grepfolgendermaßen durchsuchen :
$ grep -- foo *
Sie können find mit dem Argument -exec koppeln. Beispiel:
find . -maxdepth 1 -exec grep foo {} \;
Dies kann skaliert werden, dh -maxdepth 2
-maxdepth 1) war skalierbar. Zum Beispiel -maxdepth 2. Ich weiß nicht, wie ich die von Ihnen vorgenommene Bearbeitung beschreiben soll.
-maxdepth) keine portable / Standard-Syntax ist (nur GNU und einige BSDs). Außerdem hat die Verwendung \;hier keinen Sinn (eine greppro Datei ausführen ). Verwenden Sie grep -H foo {} +(GNU-spezifisch) oder grep foo /dev/null {} +(Standard), um sicherzustellen, dass der Dateiname immer gedruckt wird. Das Standardäquivalent zu -maxdepth 2wärefind . -path './*/*' -type d -prune -o -type f -exec ...
.die Sie nicht geben -mindepth 1) geben, während GNU grepnicht versucht, Verzeichnisse mit zu lesen -r(es rekursiert auf ihnen). Möglicherweise möchten Sie eine hinzufügen , -d skipum grep(unter der Annahme GNU grep) oder besser hinzufügen ! -type dzu findoder noch besser -type f(oder -xtype fGNU vorausgesetzt find) , wie Sie wahrscheinlich nicht wollen , grepnicht reguläre Dateien lesen.
grep -Hindiesen Ansatz zu verwenden, damit ich den Dateinamen und die Zeile sehen kann, in der sich das Vorkommen befindet.
-nmit Ausnahme der Option, überhaupt nicht zurückzugreifen.