Bash或Python:在所有.tex文件中递归地添加和预先加载一个字符串

问题描述:

我试图找到一种方法在LaTeX中使用包“子文件”来更改我的主/子文档工作流程,所以我试图追加并且前置到每一个文件我已经有下面几行:Bash或Python:在所有.tex文件中递归地添加和预先加载一个字符串

行前面加上:

\documentclass[<mainfile>]{subfiles} 
\begin{document} 

线至澳鹏:

\end{document} 

我正在考虑使用bash,但我也可以用Python很好,我不知道什么是最好的。

如果您有任何建议:-)?

+1

使用'sed'编辑文件会非常快。 –

+0

是的,发布输入片段和预期结果 – RomanPerekhrest

一个直观的方法是使用cat

例如,首先创建两个文件prepend.texappend.tex包含您要添加的内容。将它们连接起来与源文件来创建所需的目标文件

$ cat prepend.tex source.tex append.tex > target.tex 

要递归应用到一个目录内的所有现有文件说src/你可以使用:

$ find src/ -type f -name "*.tex" -exec sh -c "cat prepend.tex '{}' append.tex > '{}'.tmp" \; 

这将创建一个新的.tmp文件与每个源文件一起。确保结果的.tmp文件exaclty你想继续覆盖与.tmp那些源文件之前什么:

$ find src/ -type f -name "*.tmp" -exec rename -n 's/.tmp$//' '{}' \; 

变化从-nrename命令-f的选项来强制覆盖

+0

Wawww那超级顺畅!一秒钟的反应来分析每一个文件,并感觉使用临时文件非常安全(我会记住这一点!)。非常感谢 ! –

+0

@EtienneS很酷,很高兴我可以帮助:)顺便说一句,当需要更复杂的编辑时,其他用户提到的'sed'或'awk'也可以派上用场。 – etopylight

+0

我用sed试过,但它有点棘手:我还没有习惯它(必须!) –