Задача заменить stroka1 на stroka2 во всех файлах выбранной директории. При это во вложенных каталогах так же.
Возможно есть способы поизящнее, я решила поюзать perl + find.
Как использовать perl взяла вот тут .
Получила в итоге:
find . -type f -exec perl -i -ne "s/stroka1/stroka2/g;print;" '{}' \;
Естествнное, первый параметр у find вместо . может быть любой путь, так же вместо stroka1, stroka2 - любое вырожение.
Заработало.
Как всегда забыла про скрытые файлы в папках .svn подрихтовала с учетом того, что я писала ранее :)
перл слишком круто для такого. Хотя и универсально.
ОтветитьУдалитьВот частное решение (я правда CVS исключал)
find . -type f -not -path '*/CVS/*' -exec replace stroka1 stroka2 -- {} +
Женечка, спасибо мое солнце :-* но у меня дневний tcsh, и кроме того команды replae у меня нет :( админских прав тоже.
ОтветитьУдалитьНо буду знать, вдруг следующей жизни повезет больше :)
УПС! Хотел поругать твою систему, выяснил, что это часть MySQL :) то-то у неё аргументы нестандартно-гнушные были.
ОтветитьУдалитьНашел гнусную утилю.
ОтветитьУдалитьзамена в файле, с регекспами:
sed -i 's/void/VOID/g' md5.*
В некоторых источниках упоминается как gsed
Угу, только ее не рекомендуют использовать, когда входной и выходной поток один файл. Вывод она делает в выходной поток :)
ОтветитьУдалить