Bash或Python:在所有.tex文件中递归地添加和预先加载一个字符串
我试图找到一种方法在LaTeX中使用包“子文件”来更改我的主/子文档工作流程,所以我试图追加并且前置到每一个文件我已经有下面几行:Bash或Python:在所有.tex文件中递归地添加和预先加载一个字符串
行前面加上:
\documentclass[<mainfile>]{subfiles}
\begin{document}
线至澳鹏:
\end{document}
我正在考虑使用bash,但我也可以用Python很好,我不知道什么是最好的。
如果您有任何建议:-)?
一个直观的方法是使用cat
例如,首先创建两个文件prepend.tex
和append.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$//' '{}' \;
变化从-n
到rename
命令-f
的选项来强制覆盖
Wawww那超级顺畅!一秒钟的反应来分析每一个文件,并感觉使用临时文件非常安全(我会记住这一点!)。非常感谢 ! –
@EtienneS很酷,很高兴我可以帮助:)顺便说一句,当需要更复杂的编辑时,其他用户提到的'sed'或'awk'也可以派上用场。 – etopylight
我用sed试过,但它有点棘手:我还没有习惯它(必须!) –
使用'sed'编辑文件会非常快。 –
是的,发布输入片段和预期结果 – RomanPerekhrest