Чи є спосіб сказати 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. Я не знаю, як описати редакцію, яку ви зробили як таку.
-maxdepth) не є переносним / стандартним синтаксисом (лише 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щоб взагалі не повторюватися.