Bash 或 Python :在所有 .tex 文件中递归地附加和前置字符串

Bash or Python : Append and prepend a string recursively in all .tex files

我正在尝试找到一种方法来使用包 "subfiles" 在 LaTeX 中更改我的 master/child 文档工作流程,因此我正在尝试附加和添加到我已有的每个文件中以下几行:

要添加的行:

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

要添加的行:

\end{document}

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

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

一种直观的方法是使用 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 文件覆盖源文件之前,请确保这些 .tmp 文件中的结果是 exaclty 您想要的结果:

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

rename 命令的选项从 -n 更改为 -f 以强制覆盖