2014-01-08 3 views
0

Я хотел бы вставить содержимое текстового файла, назовем его Menu.incl внутри нескольких разных файлов. Я знаю, как сделать это на один файл, используя команду и патча в путем введения метки в целевом файле:Вставьте тот же текстовый файл внутри нескольких текстовых файлов

sed -e '/the Menu is Here/r Menu.incl' F.html > F_Menu.html 

Я хочу, чтобы сохранить исходный файл для возможного будущего развития файла Menu.incl ,

Как я могу сделать это для каждого члена коллекции html-файлов? Мое предположение: с помощью команды find? Я пытался получить ожидаемый результат с помощью следующей команды:

find . -name '*.html' -exec sed -e '/the Menu is Here/r Menu.incl' '{}' + 

, но я не знаю, как сохранить каждую измененную .html содержимое внутри копии, то есть без порчи оригинальной HTML файлы

Чем вы за вашу помощь, Ромуальд

ответ

1

Попробуйте с процесса замещения:

while read f; do 
    d=$(dirname "$f") 
    b=$(basename "$f") 
    b="new.$b" 
    sed -e '/the Menu is Here/ r Menu.incl' "$f" > "$d/$b"; 
done < <(find . -type f -iname "*.html" -print) 
+0

приятно, спасибо лет u очень много. Есть ли возможность создать new.F.html вместо F.html.new? – user2997973

+0

@ user2997973: Просто измените перенаправление вывода, как вы хотите. – Birei

+0

Это менее очевидно, так как $ f содержит относительный путь, а не только имя html-файлов, поэтому я получаю сообщение erreor, когда я перенаправляюсь на «новый $ f» вместо «$ f.new» - >> new./test.html – user2997973

Смежные вопросы