Поиск строки рекурсивно, пока в текущем каталоге

Я хочу рекурсивно искать все файлы из каталога, в котором я нахожусь, для конкретной строки.

Я попытался

grep -r -i my_string

и попробовал его в тестовой папке с двумя крошечными файлами, но он не нашел строку.

Кроме того, есть ли какой-то особый способ определения «содержит», а не сопоставления всего слова?

15
задан 13 June 2018 в 00:42

1 ответ

Вы ищете имя файла или слово внутри файла? grep ищет в файлах, что, кажется, вам нужно.

grep использует регулярные выражения - фактически это то, что означает часть re. Таким образом, он не использует обычные символы подстановки bash; то есть, abc* не найдет слова, начинающиеся с abc, он найдет слова, начинающиеся с ab, затем ноль или более с. Но да, если вы просто дадите ему образец, он найдет его где угодно, без знания целых слов. Если вы хотите найти целые слова, вам нужно создать регулярное выражение, чтобы сказать это.

Но, как и большинство команд, вам нужно поместить имя файла (ов) в конце команды, так что ваш пример будет просто сидеть и ждать имени файла.

Как сказал @plink, используйте

grep -r -o -i "your_string" *`

(или *.*, или другие спецификации файлов). Ошибки могут быть проигнорированы. Если вы получаете много ошибок, вы можете добавить 2>/dev/null в конец, чтобы перенаправить stderr на нулевое устройство.

0
ответ дан 13 June 2018 в 00:42

Другие вопросы по тегам:

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