Как я рекурсивно генерирую текстовый файл, который имеет список всех файлов на моем сервере, которые содержат определенную строку где-нибудь в файлах?
Я знаю, что следующая команда может использоваться для замены строки рекурсивно
find /var/www -type f -print0 | xargs -0 sed -i 's/old string/new string/g'
Я не хочу заменять строку, я просто хочу список всех файлов, которые содержат строку.
Использовать grep
вместо sed
:
find /var/www -type f -print0 | xargs -0 grep -i 'old string'
От пути Вы формулируете вопрос, кажется, что Вы еще не слишком знакомы с grep
. Читайте больше о его опциях в его типе страницы справочника: man grep
в Вашей командной строке.
обновите, чтобы ответить, что комментарий - пытается добавить -l
опция показать просто имена файлов. -i
делает поиск нечувствительным к регистру. Простое в использовании оба с единственным тире: grep -il
Попробуйте ack - это быстрее, чем grep и поддерживает жемчуг regex.
ack -la <pattern> /var/www
В некоторых системах этот пакет называют "ack" и иногда его названным "ack-grep".