linux — заменить все строки, содержащие определенное слово, новым словом во всех PHP-файлах в папке

Предположим, у меня есть папка с большим количеством php-файлов, и некоторые из этих php-файлов содержат строку, содержащую определенное слово, мне нужна командная строка linux, которая находит все файлы с этими строками (которая содержит определенное слово) и заменяет эта строка с другим словом
например:

     $source = $_FILES['fupload']['tmp_name'];
$target = "upload/".$_FILES['fupload']['name'];
move_uploaded_file( $source, $target );// or die ("Couldn't copy");
$size = getImageSize( $target );

В приведенном выше коде, который является частью php-файла, предположим, что определенное слово — «fupload», и мы хотим заменить эту строку на «echo», после запуска командной строки linux она становится такой:

     echo
$target = "upload/".$_FILES['fupload']['name'];
move_uploaded_file( $source, $target );// or die ("Couldn't copy");
$size = getImageSize( $target );

и этот процесс выполняется для всех файлов phph, которые имеют эту ситуацию.

Я нашел этот код, но этот код удаляет только те строки, которые содержат определенное слово, но мне нужно заменить все эти строки другим словом:

      find /var/www/website -type f -exec sed -i '/$vjfegamd/d' {} ';'

1

Решение

Заменить только первый случай fupload(как в вашем примере кода), попробуйте это:

find . -name '*.php' -print0 -exec sed -i.bak '0,/fupload/c echo' {} \;

c Команда изменяет всю строку на строку, следующую за командой.

Перед редактированием все файлы сохраняются с .bak расширение.

Поскольку некоторые ароматизаторы седана требуют c чтобы следовать с новой строкой, вы можете попробовать эту для того же результата:

find . -name '*.php' -print0 -exec sed i.bak '0,/fupload/s//echo/' {} \;
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector