Как изменить много HTML-файлов одновременно?
У меня есть тысячи HTML-файлов, которые я хотел бы изменить одновременно в системе Fedora. Было бы заменить style.css
от ../headers.css
и заменить другую длинную цепь, которую вы можете увидеть здесь: http://pastebin.com/PHAz8Q4C
2 ответа
Я бы рекомендовал использовать такой инструмент, как sed
который может делать замены текста / регулярных выражений в файле.
Сочетая это с find
а также xargs
это хорошее начало, чтобы заставить его работать с большим количеством файлов.
Так, например, вы могли бы сделать что-то вроде
find -name "*.html" -print0 | xargs -0 sed -i 's#style.css#../headers.css#g'
Поскольку отменить эту операцию невозможно, я бы порекомендовал сделать резервную копию файлов на всякий случай (или использовать контроль версий!)
РЕДАКТИРОВАТЬ: Руководство о том, как расширить это на другие условия поиска / замены (например, ваш pastebin):
Та же идея Просто убедитесь, что вы все правильно избежали. В качестве объяснения, которое может помочь вам...
find
находит всеhtml
файлыxargs
запускает команду после нее для каждого файлаsed
делает замену-i
говоритsed
сделать это на местеs
говорит этоSubstitute
style.css
что заменить../headers.css
это то, что заменить его- а также
g
говорит ему заменить все вхождения в файле.
Для вашего длинного кода, вы можете попробовать это:
find . -name "*.html" -exec sed -i 's#<a href="\.\./index.html">«</a> <h1>\(.*\)</h1>#<section class="skin-organic" role="region">\n <header>\n <a href="../index.html"><span class="icon icon-back">back</span></a>\n <h1>\1</h1>\n </header>\n</section>#g' {} \;