Como posso encontrar arquivos com uma longa primeira linha?

3

Atualmente, tenho um problema com um servidor. Um usuário que hospeda muitos sites foi hackeado e alguns de seus arquivos php foram modificados. Agora quero obter uma lista dos arquivos infectados e também verificar se ele limpou toda a bagunça.

O mais comum entre os arquivos infectados é que a primeira linha é muito longa. Então eu gostaria de encontrar todos os arquivos php no servidor que tem um comprimento mínimo de 1000 caracteres.

Bem, eu posso encontrar todos os arquivos php com "find" e obter com "head -n 1" a primeira linha e contar os caracteres com "wc -m".

Mas como posso combiná-lo?

    
por user39063 05.05.2016 / 08:31

2 respostas

7

Você pode fazer isso apenas com find e awk :

find . -type f -name '*.php' -size +1000c -exec awk '
    FNR > 1 {nextfile}
    length >= 1000 {print FILENAME}' {} +

O script awk pula para o próximo arquivo após a primeira linha de cada arquivo. Ele imprime o nome do arquivo atual se a linha atual for > = 1000 caracteres.

    
por 05.05.2016 / 08:44
1

Você pode experimentar este usando find e grep :

find . -type f -name '*.php' -exec grep '.\{1000\}' {} +
    
por 05.05.2016 / 08:52

Tags