у меня много php файлов, может быть, более трех миллионов ..
Как я могу использовать grep с xargs и найти с помощью mv, чтобы найти содержат строки в файлах и переместить их в каталог, если они совпадают.

Я пытаюсь так

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

это ничего не делает.

но если я бегу без второго xargs, я получу такой результат ... правильные файлы

./20150713094500*/vb/showthread.php?p=10297131
./20150715080347*/vb/showthread.php?t=1133875&page=3
./20150630233104*/vb/member.php?find=lastposter&t=1234502

1 ответ1

1

Найти файлы, которые соответствуют '*.php*

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

затем передайте каждое имя файла в grep который будет выводить только имена файлов, если будет найдена строка «to times»

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

затем передайте каждое имя файла в mv

xargs -I {} mv '{}' old/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .