Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет old_apazhe ([info]old_apazhe)
@ 2005-11-13 06:06:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Чайнический впорос.
Как мне на машине с freebsd прочесать несколько сотен каталогов и заменить в лежащих в них файлах одну подстроку на другую?
Усложняя задачу: заменить подстроку на путь к этому файлу?

В виндах-то у меня утилитка есть...


(Читать комментарии) - (Добавить комментарий)

Поэпигонствую
[info]oal@lj
2005-11-13 09:45 (ссылка)
> find /путь/к/каталогам -type f -print0 | xargs -0 perl -p -i.bak -e 's/подстрока/$ARGV/g'

for i in `find /каталог1 /каталог2 -type f`; do cp $i $i~; cat $i | sed -e 's/подстрока/заменить на это/g' > $i.tmp; mv $i.tmp $i; done

Не будет работать, если в именах файлов есть пробелы. Зато не требует перловки. Оставляет бейкап в filename.ext~.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Поэпигонствую
[info]brohm@lj
2005-11-13 09:55 (ссылка)
Угу, только если файлов много ("сотни каталогов") - работать тоже не будет.

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Поэпигонствую
[info]oal@lj
2005-11-13 10:31 (ссылка)
Не то, чтобы я это проверял, но -- почему?

xargs не будет работать -- отраничение на количество параметров в ком.строке. А for что сделается?

(Ответить) (Уровень выше) (Ветвь дискуссии)

Re: Поэпигонствую
[info]brohm@lj
2005-11-13 13:45 (ссылка)
Все наоборот.

(Ответить) (Уровень выше)


(Читать комментарии) -