Вирішено Як знайти всі файли, що містять певний текст у Linux?
Я намагаюся знайти спосіб просканувати всю мою систему Linux на наявність усіх файлів, що містять певний рядок тексту. Тільки для уточнення, я шукаю текст у файлі, а не в його назві.
Коли я шукав, як це зробити, я двічі стикався з цим рішенням:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Однак це не працює. Здається, відображається кожен файл у системі.
Відповіді на питання
Виконайте наступне:
grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
або-R
- рекурсивний пошук,-n
- вивести номер рядка-w
пошук цілого слова.-l
(нижній регістр L) можна додати, щоб просто вказати ім'я відповідного файлу.
Також можна використовувати, --exclude
, --include
, --exclude-dir
. Ці прапори можуть бути використані для ефективного пошуку:
Ця команда буде здійснювати пошук лише у тих файлах з розширенням .c
або .h
:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
Ця команда виконає пошук у всіх файлах, за виключенням тих що закінчуються розширенням .o
:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
Для каталогів можна виключити один або кілька каталогів за допомогою параметра --exclude-dir
. Наприклад, ця команда виключить директорії dir1/
, dir2/
а також ті що відповідають *.dst/
:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
Для отримання додаткових опцій перевірте man grep
.
Схожі питання
-
Вирішено Як встановити необхідну версію PHP за замовчуванням на Ubuntu Linux
Alex · 18 · 1 -
Вирішено Де використовується python?
Alex · 20 · 1 -
Вирішено Як дізнатися файл диска знаючи файл розділу в linux
Alex · 11 · 1 -
Вирішено У чому сенс і переваги #!/usr/bin/env?
Alex 1 · 15 · 1 -
Вирішено Як об'єднати кілька комітів в один
Alex · 31 · 1 -
Вирішено Що таке pull request?
Alex · 19 · 2 -
Вирішено Як в Laravel згенерувати файл для завантаження на льоту
Alex · 9 · 1