Поиск и замена по SSH

D
На сайте с 28.06.2008
Offline
1114
2105

На тестовом одноименном домене поднял копию сайта для тестов, теперь нужно заменить во всех файлах site.ru на site.com

Можно это без скриптов чисто командой по ssh сделать?

DV
На сайте с 01.05.2010
Offline
644
#1

Да что уж скриптов-то неохота?

#!/bin/sh

#permission must be 755!
#Можно положить в Path /usr/local/bin/searchreplace и вызывать:
#searchreplace 'replace this' 'replacement phrase' '*.php'
#Только контроль, без замены: searchreplace 'replace this' 'replacement phrase' '*.php' control
#Получаем параметры из строки
SEARCH=$1
REPLACEMENT=$2
MASK=$3
CONTROL=$4

SAVEIFS=$IFS
#Устанавливаем разделитель строк
IFS='
'
if [ "${SEARCH}" = "" ]; then
echo "Usage: searchreplace '<replace this>' '<replacement phrase>' 'files mask' [control]"
echo "e.g.: searchreplace 'replace this' 'replacement phrase' '*.php'"
CONTROL=1
fi

if [ "${CONTROL}" = "control" ]; then
echo Control of replacing:
#Заносим список низлежащих файлов в массив
FILES_LIST=`find . -type f -name "${MASK}"`
for FILE in ${FILES_LIST}; do
echo ' File: '${FILE}
#cat ${FILE} | sed -e "s/${SEARCH}/${REPLACEMENT}/g" > tmp.tmp
cat ${FILE} | grep -b ${SEARCH} | sed -e "s/${SEARCH}/${REPLACEMENT}/g" | grep ${REPLACEMENT}
#grep -b ${REPLACEMENT} tmp.tmp
#rm tmp.tmp
done
fi

if [ "${CONTROL}" = "" ]; then
rm tmp.tmp
#Заносим список низлежащих файлов в массив
FILES_LIST=`find . -type f -name "${MASK}"`
for FILE in ${FILES_LIST}; do
echo ' File: '${FILE}
cat ${FILE} | sed -e "s/${SEARCH}/${REPLACEMENT}/g" > tmp.tmp
mv -f tmp.tmp "$FILE"
done
fi

IFS=$SAVEIFS
Пути под свою ОС подрихтуйте.
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
Andron_buton
На сайте с 19.07.2007
Offline
270
#2

sed 's/site.ru/site.com/g'

D
На сайте с 28.06.2008
Offline
1114
#3
Andron_buton:
sed 's/site.ru/site.com/g'

Что это - запрос такой? Так в консоль и ввести? Что такое s и g ?

DV
На сайте с 01.05.2010
Offline
644
#4

s — замена

g — глобально

Andron_buton
На сайте с 19.07.2007
Offline
270
#5
sed 's/Nick/John/g' report.txt

Заменяет каждое вхождение Nick на John в файле report.txt

http://habrahabr.ru/post/55121/ вот еще пару советов

D
На сайте с 28.06.2008
Offline
1114
#6

Мне в разных файлах нужно менять

Оптимизайка
На сайте с 11.03.2012
Offline
396
#7

find . -type f -exec sed -i 's/Nick/John/g' '{}' ';'

⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
D
На сайте с 28.06.2008
Offline
1114
#8
Оптимизайка:
find . -type f -exec sed -i 's/Nick/John/g' '{}' ';'

а как тут указать директорию где замену делать?

DV
На сайте с 01.05.2010
Offline
644
#9

Текущая и низлежащие. Либо вместо точки путь пишите.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий