Як здійснити пошук максимальної глибини в "ack and grep"?


32

Чи є спосіб сказати ackшукати текст лише в поточній папці? (або вказати max-depthрівень?) І з grep?


1
Ні, ack не має можливості максимальної глибини, крім того, -nщоб взагалі не повторюватися.
Енді Лестер

Відповіді:


22

Використовувати -nдля no-recurse:

$ ack -n foo

grepза замовчуванням не є рекурсивним, і ви повинні використовувати -rпрапор лише в тому випадку, якщо потрібно рекурсивний пошук.

Ви можете шукати в поточному каталозі grepтаким чином:

$ grep -- foo *

13
Не відповідає на запитання? (що робити, якщо я хочу повторитись на глибину 2)
Стівен Лу,

Добре, я пропустив це. Будь-які пропозиції?
Ерік Вілсон

29

Ви можете знайти пару за допомогою аргументу -exec. приклад:

find . -maxdepth 1 -exec grep foo {} \;

Це можна масштабувати, тобто -maxdepth 2


Стефане, моя відповідь ( -maxdepth 1) була масштабною. Наприклад -maxdepth 2. Я не знаю, як описати редакцію, яку ви зробили як таку.
Девід Уілкінс

він не досягне @stephane, якщо ви не використовуєте @.
Брайам

4
Так вибачте, я погоджуюся, що моя редакція була занадто нав'язлива. Ви все ще можете уточнити, що that ( -maxdepth) не є переносним / стандартним синтаксисом (лише GNU та деякі BSD). Також тут немає сенсу використовувати \;(запустіть по одному grepфайлу). Використовуйте grep -H foo {} +(специфічно для GNU) або grep foo /dev/null {} +(стандартне), щоб переконатися, що ім'я файлу завжди друкується. Стандартний еквівалент був -maxdepth 2биfind . -path './*/*' -type d -prune -o -type f -exec ...
Стефан Шазелас

2
Також зауважте, що ваші надсилатимуть повідомлення про помилки для каталогів (у тому числі, .як ви не даєте -mindepth 1), тоді як GNU grepне буде намагатися читати каталоги з -r(вона повторюється в них). Ви можете додати -d skipдо grep(припускаючи GNU grep) або краще додати ! -type dдо findабо навіть кращого -type f(або -xtype fприпускаючи GNU find), оскільки ви, ймовірно, не хочете grepчитати не регулярні файли.
Стефан Шазелас

4
Я схильний використовувати grep -Hinз таким підходом, щоб я міг бачити ім'я файлу та рядок, на якому відбувається зустріч.
ВВП2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.