Найдите файлы с определенным форматом файлов, коту, каждый с файлом заголовка, и сохраните результат в исходный файл для каждого такого файла

У меня есть куча html-файлов, и я хочу котировать их (индивидуально) с помощью файла заголовка (несколько строк по крайней мере в длину), например header.txt. Я почти на месте. Я могу cat каждый файл с файлом заголовка с помощью следующей команды, но как я могу затем вывести результат, чтобы сохранить его под исходным именем файла?

find . -iname "*.html" | xargs -L 1 cat header.txt 

Вышеприведенное выдает то, что я хочу, но как я могу ссылаться на аргумент xargs чтобы добавить окончательное> исходное имя файла?

Короче говоря, я хочу вставить текст из header.txt в начало каждого html-файла. Могу ли я изменить приведенную выше команду для этого? Или, альтернативно, есть ли другие способы достижения этого?


Как обновление, вот что я пробовал со времени публикации, которое не сработало:

 find . -iname "*.html" | xargs -L 1 cat header.txt {} > {}.new 

Это прекрасно, за исключением того, что он печатает в файл, буквально названный {}.new . Этот файл выглядит так, как надо, но это не полезно.

Также попробовал предложение @ Dave, но есть синтаксическая ошибка, которую я не могу исправить:

  find . -iname "*.html" -exec (cat header.txt; cat {}) > {}.new -bash: syntax error near unexpected token `(' 

Я хочу вставить текст из header.txt в начало каждого html-файла.

Чтобы добавить содержимое header.txt ко всем файлам HTML, используйте этот параметр oneliner:

 for i in `find . -name '*.html'` ; do cat /path/to/header.txt > "$i".tmp && cat "$i" >> "$i".tmp && mv "$i".tmp "$i" ; done 

Содержание 1.html :

 first html file contents 

Содержимое header.txt :

 my header 

Содержание 1.html после запуска скрипта:

 my header first html file contents 

(Я тестировал его, но делаю резервное копирование ваших файлов на всякий случай.)

Вы можете использовать цикл while, например:

 find . -iname "*.html" | while read line; do cat header.txt "$line" > "${line}.new" ; done