sed -i.bak 's/foo/bar/g' *
заменит каждое foo
на bar
в каждой строке каждого файла в текущем каталоге и создаст файл резервной копии с расширением .bak
.
Так что я бы посмотрелв sed
.Но ... Вим очень способна:
vim -c "bufdo!%s/foo/bar/g" -c "wqa" *
- почти то же самое.bufdo!
выполняет следующую команду (%s/foo/bar/g
в этом случае => заменить каждый foo
на bar
в каждой строке (%
- это специальный адрес строки для каждой строки)).wqa
означает: напишите все, затем выйдите.Вы можете указать не более 10 -c
переключателей на Vim, которые будут выполняться в указанном порядке.Итак, в основном это автоматизация Vim:
- открыть каждый файл в текущем каталоге => каждый файл имеет свой собственный буфер
- выполнить подстановку в каждом буфере
- затем запишите файлы и закройте
Единственное отличие - отсутствие создания файла резервной копии (что может быть легко достигнуто с некоторыми настройками .vimrc
).Но sed
быстрее.