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.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
文件覆盖源文件之前,请确保这些 .tmp
文件中的结果是 exaclty 您想要的结果:
$ find src/ -type f -name "*.tmp" -exec rename -n 's/.tmp$//' '{}' \;
将 rename
命令的选项从 -n
更改为 -f
以强制覆盖
我正在尝试找到一种方法来使用包 "subfiles" 在 LaTeX 中更改我的 master/child 文档工作流程,因此我正在尝试附加和添加到我已有的每个文件中以下几行:
要添加的行:
\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
文件覆盖源文件之前,请确保这些 .tmp
文件中的结果是 exaclty 您想要的结果:
$ find src/ -type f -name "*.tmp" -exec rename -n 's/.tmp$//' '{}' \;
将 rename
命令的选项从 -n
更改为 -f
以强制覆盖