Найдите команду для поиска определенного имени папки, а затем выполните поиск в результатах.

Найдите команду для поиска определенного имени папки, а затем выполните поиск в результатах.

У меня есть куча сайтов wordpress, размещенных в среде общего хостинга. Как и в каждом сайте wordpress, есть каталог "uploads". Я хотел бы регулярно искать потенциально вредоносные файлы, которые находятся в этих папках, но я не хочу делать это по одному.

Итак, вопрос в том, как мне выполнить поиск файла с расширением «.php» во всех каталогах «загрузки»?

Например:

find . -type d -iname "uploads"

выводит все папки «загрузки» в моем корневом каталоге, но я также хочу искать в этих директориях

решение1

Вы можете передать вывод из одной команды в другую, но вы можете выполнить поиск по обоим критериям одновременно, используяgrepиОбычные выражения:

find . -type f | grep -i "/uploads/.*\.php$"

Как это работает:

  • find . -type fспискивсефайлы в текущем каталоге и его подкаталогах.

  • grep -i "/uploads/.*\.php$"фильтрует вывод:

    • -iделает поиск нечувствительным к регистру

    • /uploads/.*\.php$регулярное выражение, которому должна соответствовать строка, чтобы быть отображенной

      • /uploads/ phpименно это

      • .*любое количество вхождений любого типа символов

      • \.это буквальный.

      • $сигнализирует о конце линии

Вы можете достичь того же результата с помощью

find . -type f -iregex ".*/uploads/.*\.php"

но синтаксис может оказаться сложным, если вы знаете регулярные выражения из grep, Perl, PHP, JavaScript и т. д.

Связанный контент