Я пытаюсь сделать текстовый поиск в некоторых файлах, которые совместно используют подобную структуру каталогов, но не находятся в том же дереве каталогов в GNU/Linux.
У меня есть веб-сервер со многими сайтами, которые совместно используют ту же древовидную структуру (Воспламенитель кода платформа MVC PHP), таким образом, я хочу искать в определенном каталоге вниз дерево для каждого сайта, примера:
/srv/www/*/htdocs/system/application/
Где * название сайта. И от тех каталогов приложения, я хочу искать все дерево вниз на его листы для *.php файла, который имеет некоторый текстовый шаблон внутри, скажем, "отладка (", никакое необходимое регулярное выражение.
Я знаю, как использовать, находят и grep, но я не хорош в объединении их.
Как я сделал бы это?
Заранее спасибо!
Попробовать
find /srv/www/*/htdocs/system/application/ -name "*.php" -exec grep "debug (" {} \; -print
Это должно рекурсивно искать папки под application
для файлов с .php
расширение и передает их grep
.
Оптимизация на этом должна была бы выполниться:
find /srv/www/*/htdocs/system/application/ -name "*.php" -print0 | xargs -0 grep -H "debug ("
Это использует xargs
передать весь .php
файлы, произведенные find
как аргументы синглу grep
команда; например, grep "debug (" file1 file2 file3
. -print0
опция find
и -0
опция xargs
гарантируйте пробелы в именах файлов, и имена каталогов правильно обрабатываются. -H
опция передала grep
гарантирует, что имя файла печатается во всех ситуациях. (По умолчанию, grep
печатает имя файла только, когда несколько аргументов передаются в.)
От человека xargs:
-0
Входные параметры завершаются нулевым символом вместо пробелом, и кавычки и обратная косая черта не являются особенными (каждый символ взят буквально). Отключает конец строки файла, которую рассматривают как любой другой аргумент. Полезный, когда входные параметры могли бы содержать пробел, метки кавычки или обратные косые черты. GNU находит
-print0
опция производит вход, подходящий для этого режима.
find /srv/www/*/htdocs/system/application/ -name "*.php" -print0 | xargs -0 grep "debug ("
– Jukka Matilainen 24.09.2009, 16:45