So stellen Sie eine Auswahl von Markdown-Dokumenten zusammen

7

Verarbeiten einer einzelnen Markdown-Datei zu HTML:

pandoc -f markdown -t html inputfile.md

Obwohl ich Pandoc so verwenden kann, um einzelne Markdown-Dateien zu verarbeiten, möchte ich eine Liste ausgewählter Markdown-Dateien zusammenstellen und sie zu einer einzigen Datei verarbeiten.

Wenn ich Markdown-Dateien habe:

inputfile1.md, inputfile2.md, inputfile3.md

Wie kann ich sie kompilieren und mit Pandoc zu einer einzigen Ausgabedatei verarbeiten?

johntait.org
quelle
3
Sie geben zehn Zeilen irrelevanter Hintergrundinformationen an und stellen eine einzeilige Frage, bei der alle erforderlichen Informationen fehlen. Normalerweise wird ein Beispiel gegeben, wenn Menschen solche Probleme haben. Wie werden die Dateien ausgewählt und wie soll die Shell sie verarbeiten?
Hauke ​​Laging

Antworten:

8

pandoc kann mehrere Eingabedateien aufnehmen. Benutz einfach:

pandoc -s -o output.html input1.md input2.md input3.md

-sweist pandoc an, eine in sich geschlossene Datei zu erstellen (sie enthält also <html></html>Tags usw., anstatt nur ein Fragment zu generieren). -o output.htmlGibt an, dass output.htmldies die Ausgabedatei sein wird. Wenn die Ausgabedatei auf endet .html, -t htmlist dies nicht erforderlich. Wenn Sie in STDOUT ausgeben möchten, behalten Sie diese natürlich bei.

Nach -f markdowneinigem Testen scheint dies auch bei Verwendung von Eingaben ohne Dateierweiterung nicht erforderlich zu sein - entweder weil es das Standard-Markup ist, das Pandoc erwartet, oder weil Pandoc erkennen kann, welche Markup-Sprache verwendet wird.

Sie können natürlich Globs verwenden, um weniger einzugeben:

pandoc -s -o output.html input*.md
Übelsuppe
quelle
9

Sie geben viel Hintergrundwissen, aber es ist schwer zu sagen, was Sie tatsächlich auf funktionaler Ebene wollen, daher rate ich hauptsächlich darüber, wie Ihre Dateien hier strukturiert sind. Bitte geben Sie in Zukunft weniger Hintergrundinformationen und mehr Informationen an, die für die Frage relevant sind, damit Ihnen effizienter geholfen werden kann.

Wenn Sie alle *.mdDateien im aktuellen Verzeichnis in ihre eigenen Dateien kompilieren möchten :

for file in *.md; do
    pandoc -f markdown -t html "$file"
done

Wenn Sie alle *.mdDateien im aktuellen Verzeichnis in ihre eigenen Dateien kompilieren möchten , rekursiv:

find . -name '*.md' -exec pandoc -f markdown -t html {} \;

Wenn Sie alle *.mdDateien im aktuellen Verzeichnis in einer Datei kompilieren möchten :

pandoc -f markdown -t html -o foo.html *.md 

Wenn Sie alle *.mdDateien im aktuellen Verzeichnis rekursiv in eine Datei kompilieren möchten (nicht POSIX):

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

Oder (bash4 +):

shopt -s globstar
pandoc -f markdown -t html -o foo.html **/*.md
Chris Down
quelle