Remove arquivos, fornecidos pelo pipe

4

Eu tenho esta cadeia de comandos:

find . -print | grep php | xargs grep 'eval' -sl | xargs wc -l | grep ' [1-2][0-9] '

Isso me fornece essa saída:

 14 ./includes/js/calendar/lang/vgju.php
 18 ./includes/phpInputFilter/default.php
 14 ./includes/Archive/eula.php
 18 ./media/system/js/json.php

Esses arquivos são arquivos php infectados e eu gostaria de removê-lo com minha cadeia. Como posso fazer isso?

    
por Roland Soós 14.01.2011 / 19:44

1 resposta

7

Embora você provavelmente possa fazer tudo isso com o comando find, só pode tentar acrescentar |xargs rm -f a esse comando.

Veja como ficaria

find . -print | grep php | xargs grep 'eval' -sl | \
    xargs wc -l | grep ' [1-2][0-9] ' | \
    cut -f 2 -d ' ' | xargs rm -f

Observe que o comando xargs rm funciona aqui porque você sabe que não há caracteres especiais nos nomes dos arquivos. Se houver espaços nos nomes dos arquivos, você poderá usar xargs -d '\n' rm -f (somente Linux).

    
por 14.01.2011 / 19:51