Comando Find para pesquisar o nome da pasta específica do que pesquisar no resultado

Comando Find para pesquisar o nome da pasta específica do que pesquisar no resultado

Eu tenho vários sites wordpress hospedados em ambiente de hospedagem compartilhada. Como acontece com todo site wordpress, há um diretório de “uploads”. Gostaria de procurar regularmente arquivos potencialmente maliciosos que estejam nessas pastas, mas é claro que não quero fazer isso um por um.

Então a questão é como posso pesquisar em todos os diretórios de "uploads" um arquivo com extensão ".php"

Por exemplo:

find . -type d -iname "uploads"

me dá todas as pastas "uploads" no meu diretório raiz, mas também quero pesquisar nesses diretórios

Responder1

É possível canalizar a saída do seu comando para outro, mas você pode pesquisar os dois critérios ao mesmo tempo, usandogrepeExpressões regulares:

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

Como funciona:

  • find . -type flistastodosarquivos no diretório atual e seus subdiretórios.

  • grep -i "/uploads/.*\.php$"filtra a saída:

    • -itorna a pesquisa sem distinção entre maiúsculas e minúsculas

    • /uploads/.*\.php$é a expressão regular que uma linha deve corresponder para ser exibida

      • /uploads/ phpsão exatamente isso

      • .*é qualquer número de ocorrências de qualquer tipo de caracteres

      • \.é um literal.

      • $sinaliza o fim da linha

Você pode obter o mesmo resultado com

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

mas a sintaxe é um incômodo se você conhece expressões regulares de grepPerl, PHP, JavaScript, etc.

informação relacionada