Jun 14 12:46:00 mybox sshd[25761]: Server listening on :: port 5522.
Jun 14 12:46:00 mybox sshd[25761]: error: Bind to port 5522 on 0.0.0.0 failed: Address already in use.
Я думаю, что любой сценарий запускает Ваш sshd
сбой состоит в том, чтобы обнаружить что процесс это выполнение и перезапуск его неоднократно.
grep
может сделать это самостоятельно:
grep -rn --include='*.php' "pattern" .
Я думаю, что следующее сделает поиск и заменит, но удостоверится, что Вы тестируете это сначала потому что я haven't:-),
find . -type f -name '*.php' -print0 | xargs -0 sed -i '.bak' -e 's/foo/bar/g'
Это создаст резервную копию каждого файла, прежде чем он отредактирует его, создают filename.php.bak файлы, и он собирается обновить метки времени на всех файлах. Это заменяет 'нечто' 'панелью'. Это также должно быть безопасно для имен файлов с пробелами в нем.
найти. - называют '*.php'-print0 | xargs-0 grep-n "шаблон"
find . -name '*.php' |xargs -I{} perl -i.bak -pe 's/pattern/replacement/' {}
Это делает находку каждого php файла. Xargs затем выполняет команду для каждого входа на STDIN передача значения как {}
. Затем чтения Perl в файле, переименовывает его с .bak
расширение, и выполняет выражение Perl на каждой строке в файле.
Разве это не сделает для замены шаблона?
найти. - имя "*.php" - должностное лицо sed-i" .bak" 's/pattern/replace/g' {} \;
Очень опасный, хотя! Удостоверьтесь, что Вы сохраняете шаблон уникальным.:-)
Используйте ack, лучше, чем grep.
Преимущества (для большего видят Лучшие 10 оснований для использования ack вместо grep):
Для заменяющих операций Вы могли бы использовать ack в сочетании с жемчугом или sed.