2014-01-08 26 views
0

我想插入一个文本文件的内容,我们将其称为Menu.incl内的几个不同的文件。我知道如何做到这一点的一个文件,通过使用sed命令,并通过在目标文件中引入标记:在几个文本文件中插入相同的文本文件

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

不错,谢谢哟你是否有可能创建new.F.html而不是F.html.new? – user2997973

+0

@ user2997973:只需根据需要更改输出重定向。 – Birei

+0

它不太明显,因为$ f包含相对路径而不仅仅是html文件的名称,所以当我重定向到“新$ f”而不是“$ f.new”时,我得到一条错误消息 - >> new./test.html – user2997973