TeX
我可以替换一个目录中文件中的一个字符串表达式的所有实例吗?
例如,假设我想同时替换多个文件中的所有\frac
内容。\myfrac
答案1
您使用的是哪种操作系统?如果您使用的是基于 *nix 的操作系统(包括 Mac),那么最简单的方法可能是在命令行/终端中使用 TeX 执行此操作:
find /home/my/directory -type f -exec sed -i 's/OldString/NewString/g' {} \;
find
(使用和的组合sed
。)
因此你需要:
find /home/my/directory -type f -exec sed -i 's/frac/myfrac/g' {} \;
希望这可以帮助。
答案2
大多数高级文本编辑器都具有replace
可以一次应用于整套文件的功能。
例如,记事本++Windows 上提供了此功能。正如对这个问题的另一个回答中提到的,如果您使用的是基于 *nix 的系统,您可以很容易地使用命令行。
答案3
如果您使用 Vim,您可以尝试以下操作:首先在 vim 中打开其中一个 .tex 文件。
通过在隐藏缓冲区中打开同一目录下的其他 .tex 文件来加载它们:
:args *.tex
现在目录中的所有 *.tex 文件都已加载到(隐藏)缓冲区中。您可以通过发出以下命令对每个文件应用标准替换命令:
:argdo %s/string1/string2/g | update
这%是范围(整个文件),s表示替换命令,字符串1找到并替换为字符串2在每一行上,G表示这是全局执行的(因此不仅仅是每行的第一个实例)。最后一部分| 更新替换完成后将自动保存所有文件。
因为反斜杠是“特殊”字符,所以您需要用另一个反斜杠将其转义。对于您的情况,您可以发出以下命令:
:argdo %s/\\frac/\\myfrac/g | update