como mover arquivos que contenham string usando find, xargs, grep, no linux

0

eu tenho muitos arquivos php talvez mais de três milhões ..
Como posso usar o grep com xargs e encontrar com mv para encontrar conter a string em arquivos e movê-los para o diretório se eles corresponderem.

Eu tento assim

find . -iname \*.php\* | xargs -n64 grep -hEl 'to times' | xargs -0 -I {} mv {} old/

isso não faz nada.

mas se eu correr sem o segundo xargs eu tenho resultado assim ... arquivos corretos

./20150713094500*/vb/showthread.php?p=10297131
./20150715080347*/vb/showthread.php?t=1133875&page=3
./20150630233104*/vb/member.php?find=lastposter&t=1234502
    
por user3716621 30.10.2015 / 15:20

1 resposta

1

Encontre arquivos que correspondam a '*.php*

find . -type f -name '*.php*' |

em seguida, passe cada nome de arquivo para grep , o que gerará apenas os nomes dos arquivos se a string 'to times' for encontrada

xargs -I {} grep -l 'to times' '{}' |

depois, passe cada nome de arquivo para mv

xargs -I {} mv '{}' old/
    
por 30.10.2015 / 16:17

Tags