将单个 Markdown 文件处理为 HTML:
pandoc -f markdown -t html inputfile.md
虽然我可以像这样使用 Pandoc 来处理单个 Markdown 文件,但我想编译选定的 Markdown 文件的列表并将它们处理为单个文件。
如果我有一些 Markdown 文件:
inputfile1.md, inputfile2.md, inputfile3.md
如何使用 Pandoc 将它们编译并处理为单个输出文件?
答案1
pandoc 可以获取多个输入文件。只需使用:
pandoc -s -o output.html input1.md input2.md input3.md
-s
告诉 pandoc 创建一个独立的文件(因此它将包含<html></html>
标签等,而不仅仅是生成一个片段)。-o output.html
指定这output.html
将是输出文件。以.html
,结尾的输出文件-t html
是不必要的 - 如果你想输出到 STDOUT,显然保留它。
经过一些测试后,-f markdown
即使使用没有文件扩展名的输入,似乎也没有必要 - 要么因为它是 pandoc 期望的默认标记,要么 pandoc 可以检测正在使用的标记语言。
当然,您可以使用 glob 来减少输入:
pandoc -s -o output.html input*.md
答案2
您提供了很多背景知识,但很难说出您在功能层面上真正想要什么,所以我主要猜测您的文件在这里的结构。今后,请提供更少的背景信息和更多与问题相关的信息,以便您能够更有效地得到帮助。
如果要将*.md
当前目录下的所有文件编译成各自的文件:
for file in *.md; do
pandoc -f markdown -t html "$file"
done
如果要将*.md
当前目录中的所有文件编译成自己的文件,递归地:
find . -name '*.md' -exec pandoc -f markdown -t html {} \;
如果要将*.md
当前目录下的所有文件编译成一个文件:
pandoc -f markdown -t html -o foo.html *.md
如果要将*.md
当前目录中的所有文件递归地(不是 POSIX)编译为一个文件:
pandoc -f markdown -t html <(find . -name '*.md' -exec cat {} +) -o foo.html
或者(bash4+):
shopt -s globstar
pandoc -f markdown -t html -o foo.html **/*.md