mattiav27 Asked: 2019-09-11 23:26:49 +0800 CST2019-09-11 23:26:49 +0800 CST 2019-09-11 23:26:49 +0800 CST 如何编译目录中的所有tex文件 772 我在一个目录中有几十个 .tex 文件。 如何使用来自终端的单个命令编译它们? 此外:是否可以避免编译器生成的所有文件(.bak、.log、.aux、.out、.bib 文件)? 我通常用pdflatex file.tex. command-line latex 2 个回答 Voted Best Answer nobody 2019-09-12T00:22:50+08:002019-09-12T00:22:50+08:00 你可以用for命令来做 for f in *.tex; do pdflatex $f; done 我发现这个语法比 find 更容易记住。 关于删除辅助文件,请考虑使用latexmk -c -pdforlatexmk -C -pdf代替pdflatex. latexmk是latex make,它只构建需要构建的文件。我不确定,哪些辅助文件会被准确删除,但我认为它们中的大多数将被删除-c或-C切换。 for f in *.tex; do latexmk -C -pdf $f; done 根据手册,它也应该像这样工作 latexmk -C -pdf *.tex 另一种选择是在处理完成后手动删除文件。这将是这样完成的: for f in *.tex; do pdflatex $f; done; rm *.bak *.log *.aux *.out *.bib 我不确定这是否仍然符合 oneliner 的条件。 Melebius 2019-09-12T00:01:48+08:002019-09-12T00:01:48+08:00 根据man pdflatex,它只接受一个文件。可以使用以下命令在更多文件上运行此类命令find: find . -maxdepth 1 -name '*.tex' -exec pdflatex {} \; 该.参数告诉find在当前文件夹中搜索。 -maxdepth 1禁用递归到子文件夹 - 如果不需要,请删除它。 -name '*.tex'允许只处理*.tex文件。 -exec对每个找到的文件运行给定的命令 ( pdflatex) 并替换{}为实际的文件名。\;结束该选项并标记每个调用-exec只应传递一个找到的文件。pdflatex echo您可以通过包含between-exec和来测试该命令pdflatex。在这种情况下,生成的命令find将仅打印到标准输出。 完成此过程后,您可以使用以下命令简单地删除不需要的文件rm,例如: rm *.bak *.log *.aux *.out *.bib
你可以用
for
命令来做我发现这个语法比 find 更容易记住。
关于删除辅助文件,请考虑使用
latexmk -c -pdf
orlatexmk -C -pdf
代替pdflatex
.latexmk
是latex make,它只构建需要构建的文件。我不确定,哪些辅助文件会被准确删除,但我认为它们中的大多数将被删除-c
或-C
切换。根据手册,它也应该像这样工作
另一种选择是在处理完成后手动删除文件。这将是这样完成的:
我不确定这是否仍然符合 oneliner 的条件。
根据
man pdflatex
,它只接受一个文件。可以使用以下命令在更多文件上运行此类命令find
:.
参数告诉find
在当前文件夹中搜索。-maxdepth 1
禁用递归到子文件夹 - 如果不需要,请删除它。-name '*.tex'
允许只处理*.tex
文件。-exec
对每个找到的文件运行给定的命令 (pdflatex
) 并替换{}
为实际的文件名。\;
结束该选项并标记每个调用-exec
只应传递一个找到的文件。pdflatex
echo
您可以通过包含between-exec
和来测试该命令pdflatex
。在这种情况下,生成的命令find
将仅打印到标准输出。完成此过程后,您可以使用以下命令简单地删除不需要的文件
rm
,例如: