如何编译精选的 Markdown 文档

joh*_*org 7 shell-script text-processing markdown

将单个 Markdown 文件处理为 HTML:

pandoc -f markdown -t html inputfile.md
Run Code Online (Sandbox Code Playgroud)

虽然我可以像这样使用 Pandoc 来处理单个 Markdown 文件,但我想编译一个选定 Markdown 文件的列表并将它们处理为单个文件。

如果我有一些 Markdown 文件:

inputfile1.md, inputfile2.md, inputfile3.md
Run Code Online (Sandbox Code Playgroud)

如何编译它们并使用 Pandoc 将它们处理为单个输出文件?

Chr*_*own 9

您提供了很多背景知识,但很难在功能级别上说出您真正想要什么,因此我主要猜测您的文件在此处的结构。以后,请提供更少的背景和更多与问题相关的信息,以便更有效地帮助您。

如果要将*.md当前目录下的所有文件编译成自己的文件:

for file in *.md; do
    pandoc -f markdown -t html "$file"
done
Run Code Online (Sandbox Code Playgroud)

如果想把*.md当前目录下的所有文件都编译成自己的文件,递归的:

find . -name '*.md' -exec pandoc -f markdown -t html {} \;
Run Code Online (Sandbox Code Playgroud)

如果要将*.md当前目录下的所有文件编译为一个文件:

pandoc -f markdown -t html -o foo.html *.md 
Run Code Online (Sandbox Code Playgroud)

如果要将*.md当前目录下的所有文件编译为一个文件,递归地(不是POSIX):

pandoc -f markdown -t html <(find . -name '*.md' -exec cat {} +) -o foo.html
Run Code Online (Sandbox Code Playgroud)

或 (bash4+):

shopt -s globstar
pandoc -f markdown -t html -o foo.html **/*.md
Run Code Online (Sandbox Code Playgroud)


evi*_*oup 8

pandoc 可以接受多个输入文件。只需使用:

pandoc -s -o output.html input1.md input2.md input3.md
Run Code Online (Sandbox Code Playgroud)

-s告诉 pandoc 创建一个自包含文件(因此它将包含<html></html>标签等,而不仅仅是生成一个片段)。-o output.html指定output.html将是输出文件。输出文件以.html,结尾-t html是不必要的 - 如果你想输出到 STDOUT,显然保留它。

经过一些测试,-f markdown即使使用没有文件扩展名的输入,似乎也没有必要 - 因为它是 pandoc 期望的默认标记,或者 pandoc 可以检测正在使用的标记语言。

当然,您可以使用 globs 来减少输入:

pandoc -s -o output.html input*.md
Run Code Online (Sandbox Code Playgroud)