Есть ли способ сказать, ackчтобы искать только текст в текущей папке? (или указать max-depthуровень?) А с grep?
Есть ли способ сказать, ackчтобы искать только текст в текущей папке? (или указать max-depthуровень?) А с grep?
Ответы:
Использовать -nдля no-recurse:
$ ack -n foo
grepне является рекурсивным по умолчанию, и вы должны использовать -rфлаг, только если вы хотите рекурсивный поиск.
Вы можете искать текущий каталог grepследующим образом:
$ grep -- foo *
Вы можете найти пару с аргументом -exec. пример:
find . -maxdepth 1 -exec grep foo {} \;
Это можно масштабировать, т.е. -maxdepth 2
-maxdepth 1) был масштабируемым. Например -maxdepth 2. Я не знаю, как описать редактирование, которое вы сделали как таковое.
-maxdepththis ( ) не является переносимым / стандартным синтаксисом (только GNU и некоторые BSD). Кроме того, здесь нет смысла использовать \;(запускать по одному grepна файл). Используйте grep -H foo {} +(в зависимости от GNU) или grep foo /dev/null {} +(стандартный), чтобы убедиться, что имя файла всегда печатается. Стандартный эквивалент был -maxdepth 2быfind . -path './*/*' -type d -prune -o -type f -exec ...
.если вы этого не сделаете -mindepth 1), в то время как GNU grepне будет пытаться читать каталоги с помощью -r(он повторяется на них). Вы можете добавить -d skipк grep(предполагая , что GNU Grep) или лучше добавить ! -type dк findили даже лучше -type f(или -xtype fпредполагая GNU find) , как вы , вероятно , не хотите grepчитать нерегулярные файлы.
grep -Hinс этим подходом, чтобы я мог видеть имя файла и строку, в которой находится вхождение.
-nкак вообще не использовать.