Перечислите файлы, содержащие конкретное слово в их тексте

Также посмотрите их:

Plugcomputer.org - http://www.plugcomputer.org/development-kits/

Tonidoplug - http://www.tonidoplug.com/

Разъем PWN 3G - http://www.pwnieexpress.com/3gplug.html

Ионические диалекты - http://www.ionics-ems.com/plugcomputer.html

Многие Sheeva и несколько компьютеров Разъема GUI - http://www.newit.co.uk/shop/products.php?cat=5

30
18.02.2013, 14:34
7 ответов

Используйте -l или --files-with-matches опция, которая документируется следующим образом:

Подавите нормальный вывод; вместо этого распечатайте название каждого входного файла, из которого обычно печатался бы вывод. Сканирование остановится на первом соответствии. (-l указан POSIX.)

Так, для Вас пример можно использовать следующее:

$ grep check * -lR
39
27.01.2020, 19:38
  • 1
    Работы над MSYS также.Отлично! спасибо –  Kos 18.02.2013, 18:38
  • 2
    я использовал grep -rl "text to find" "/usr/share" и это работало отлично! спасибо –  Shrout1 14.12.2016, 16:12
find . -type f -exec grep -l check {} +

Вы, вероятно, не хотите использовать -R опция, который с современными версиями GNU grep следует за символьными ссылками при убывании каталогов. Используйте -r опция вместо этого там, которая начиная с версии 2.12 (апрель 2012) больше не следует за символьными ссылками.

Если Ваш grep не является GNU один или является более старым, чем версия 2.12, или если Вам нужен Ваш код, чтобы быть портативными к non-bleeding-edge-GNU системам, используйте find команда выше.

Иначе можно сделать:

grep -rl check .

Не использовать * (поскольку это опустило бы скрытые файлы в текущем каталоге (и только в текущем каталоге) и вызовет проблемы для файлов, имя которых запускается с a -), избегайте передающих опций после аргументов, поскольку это, как гарантируют, не будет работать в зависимости от среды и не портативно.

18
27.01.2020, 19:38

Попробуйте это:

find . -type f | xargs grep -c check $1 | grep -v ":0"

Что касается grep флаги...

-c возвратит имя файла, сопровождаемое: и число, указывающее, сколько раз строка поиска появляется в данном файле.

-v возьмет вывод сначала grep ищите, отфильтруйте файлы с нулевыми результатами и распечатайте просто файлы с ненулевыми результатами.

1
27.01.2020, 19:38
  • 1
    Это получит ложное отрицание, если у Вас будет файл (файлы) (или директор (директора)), чьи имена содержат :0.  It's лучше, чтобы сделать grep -v ':0$'.  Even, который будет дросселировать на путях, которые содержат новую строку (строки). –  Scott 23.07.2016, 09:01

grep-rin "whatToFind" locationToFInd

например, $ grep-rin "vihaan".

будет рекурсивно искать и перечислять имена файлов и соответствующие строки, которые имеют "vihaan" в них, "." относится к текущему каталогу.

0
27.01.2020, 19:38
find . -type f | grep "keyword" *

поиск в текущем каталоге. Чтобы добраться от корня, укажите / вместо .

0
27.01.2020, 19:38
 grep -rli trim \` find . -name *.q \` 

Дайте вам список .Q файлов содержит ключевое слово TRIM

-2
27.01.2020, 19:38

grep -lR "text-to-find" также работает нормально.

например, grep -lR "НАВИГАЦИЯ". где мы находим слово НАВИГАЦИЯ в . в текущем каталоге.

1
27.01.2020, 19:38

Теги

Похожие вопросы