Deutsch
Germany.ruФорумы → Архив Досок→ Linux & Co

Найти и заменить

1481  
alexnaum свой человек07.01.11 15:26
alexnaum
07.01.11 15:26 
есть два сайта-зеркала,скажем, mysite.ru и mysite.com, синроню через rsync, но вот есть одна засада.
Есть одна папка, включает в себя подпапки, исключать из синхронизации нельзя, так как изменения происходят довольно существенные.
Итак, в этих подпапках внутри основной папки находятся по одному или несколько xml-файлов, которые изменяются, но кроме всего прочего, они содержат несколько строк - путей соответственно с полными урлами. Таким образом, после синхронизации соотвественно косяки из за этих урлов.
Таким образом, хочу красивый скрипт, который бы искал в исходной папке рекурсивно по всем подпакам строки с одними урлами и заменял эти урлы на другие...
Все вроде просто, find и sed все делают. Осталось только до ума довести.
Например, команда вида
В ответ на:
find "корневая_папка_для_поиска" -name "*.xml" -print0 | xargs -0 sed -i -e "s/текст_для_поиска/заменяем_на/g"

все делает, но при этом копирует все исходные файлы - до вснесения в них изменений и кладет их рядом с добавлением -е в конец имени файла. А мне не нужны двойные файлы, зачем они?
Если же опцию е не применять, то не срабатывает, выходит ошибка типа
В ответ на:
sed: 1: "/home/wins/skin/me ...": undefined label 'im/skin/media/xml/media.xml'

И еще, хотелось бы иметь лог, желательно такой: после того, как find нашел данные вхождения, записался бы лог где, в каких файлах что было найдено, после замены - соответственно что стало. Вроде как grep тут нужен, но чет я не соображу, как правильно и все оформить, одним красивым скриптом.
Если у кого есть мысли, помогайте, плз.
#1 
Кот Дивуар коренной житель08.01.11 13:25
Кот Дивуар
NEW 08.01.11 13:25 
в ответ alexnaum 07.01.11 15:26
Я так понял, там внутри абсолютные ссылки на страницы внутри сайта. Замени их на относительные и проблема исчезнет.
#2 
alexnaum свой человек08.01.11 14:23
alexnaum
NEW 08.01.11 14:23 
в ответ Кот Дивуар 08.01.11 13:25
я бы рад, да не получается, во-первых, xml генерируются автоматически, и пути там получаются полные.
В принципе, можно конечно поковырять пхп код, чтобы относительные делать, но дело в том, что я пробовал вручную пути поменять на относительные, так не выводятся картинки...
#3 
Кот Дивуар коренной житель08.01.11 16:59
Кот Дивуар
NEW 08.01.11 16:59 
в ответ alexnaum 08.01.11 14:23
Значит неправильные ссылки получаются.
Если там только картинки, то вынеси их на отдельный домен. Так делают многие крупные сервисы. Или используй в голове документа тэг base (не знаю точно, как там что делается).
#4