![]() |
Приветствую, есть два сайта-зеркала,скажем, 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 делать:
Код: Код:
find "корневая_папка_для_поиска" -name "*.xml" -type f -exec sed -i -e 's/текст_для_поиска/заменяем_на/g' {} \; |
Цитата:
в общем то, уже нашел все решения,с помощью конечно, ну и причины ошибок. Ошибка выше была только во freebsd, и решилась добавлением между параметрами i и e пары пустых двойных кавычек. Я сильно не вдавался, почему на фре так, заработало как надо и ладно. А под линуксом и так все нормально отрабатывало. в принципе, даже скрипт небольшой помогли мне написать, может немного корявый, но работает быстро и лог пишет. Код: Код:
#!/bin/sh |
| Время: 03:14 |