Я намагаюся знайти спосіб сканувати всю мою систему Linux на всі файли, що містять певний рядок тексту. Просто для уточнення, я шукаю текст у файлі, а не у назві файлу.
Коли я шукав, як це зробити, я натрапив на це рішення двічі:
find / -type f -exec grep -H 'text-to-find-here' {} \;
Однак це не працює. Здається, відображається кожен окремий файл у системі.
Це близький до належного способу це зробити? Якщо ні, то як мені? Це вміння знаходити текстові рядки у файлах було б надзвичайно корисним для деяких програм програмування, якими я займаюся.
-Hна -l(а може, grepна fgrep). Щоб виключити файли з певними шаблонами імен, ви б використовували findбільш досконалий спосіб. Хоча варто навчитися користуватися find, хоча. Просто man find.
find … -exec <cmd> +легше набирати та швидше, ніж find … -exec <cmd> \;. Він працює, лише якщо <cmd>приймає будь-яку кількість аргументів імені файлу. Економія часу на виконання особливо велика, якщо <cmd>почати повільно, як сценарії Python або Ruby.
grep "pattern" path/*.txt
.як символічний знак, що складається з одного символу. Моя порада - завжди використовувати або fgrep, або egrep.