Ну так в чем проблема? Гуглите как делать циклы, как обходить директории и т.п.
P.S.: а вообще я бы посмотрел в сторону Python скриптов, там это делается проще и быстрее, да и Python есть почти во всех нормальных дистрибутивах Linux
Replace a String in Multiple Files in Linux Using Grep and Sed | Erik Hazzard - 90% тем которые находил пишут использовать sed, но все что я не пробовал выкидывало ошибки, по одному файлу заменяет а когда все файлы в папке выдавало ошибку. Еще поищу варианты и попытаюсь сформулировать более конкретно вопрос.
Конечно не выполняется, программа sed такого не поддерживает. Чтобы перебрать все файлы в папке, напишите bash-скрипт, ну например #!/bin/bash for file in $(find /path/to/folder/with/files -name '*.*') do sed -i -r 's/(word1|word2)/replacementWord/g' $file done
Может я пропустил что-то но он тоже не выполняется, выдает ошибки “sed: RE error: illegal byte sequence”
> #!/bin/bash
> for file in $(find /Users/username/Desktop/temp/myfolder -name '*.*')
> do
> sed -i -r 's/Financial Services/Finance and Insurance/g' $file
> done
Только что проверил Ваш вариант у себя - все работает (правда, возможно исходные данные различаются, я то не в курсе, что у Вас в файлах). Судя по пути после find, у Вас OS X (или как там “яблочная” система нынче называется? MacOS обратно? Я не сильно в теме. Сам юзаю Antergos - система по сути тот же Arch. В ней и проверял, собственно). Немного погуглив, нашел тред, например такой.
Попробуйте перед sed добавить LC_ALL=C, чтобы получилось как-то так #!/bin/bash for file in $(find /path/to/folder -name '*.txt') do LC_ALL=C sed -i -r 's/Financial Services/Finance and Insurance/g' $file done
или добавьте экспорт этой переменной перед скриптом, например так #!/bin/bash export LC_ALL=C for file in $(find /path/to/folder -name '*.txt') do sed -i -r 's/Financial Services/Finance and Insurance/g' $file done