2016-07-10 4 views
0

Ich habe einige Dateien auf meinem Projekt Erweiterungen wie .md.
mit Ich mag diese Dateien all .html durch die Befehl finden konvertieren.
Der Befehl I ist eine markdown Datei zu html konvertieren verwenden:
md2html file.md > file.html
Wie kann ich es tun?
Und wenn ich die HTML-Dateien in einem anderen Verzeichnis speichern möchte?, wie man Dateien konvertieren Abschlag mit Befehl find html

+0

Use'find' Befehl dieses – sjsam

Antwort

1

Verwenden find/read Befehlskombination, dies zu tun:

find /your/path/to/mdfiles -type f -name "*.md" -printf "%f\0"\ 
| while read -rd '' filename 
do 
    md2html "${filename}" "/your/html/dir/${filename%.md}.html" 
done 

sollte es tun.


erklärt

  • find /your/path/to/mdfiles -type f -name "*.md" alle Dateien findet, die die Erweiterung .md haben.
  • Wir analysieren die Ergebnisstrings/Dateinamen mit while-read -rd ''
  • ${filename%.md} die .md am Ende jeden Dateinamen
  • So ${filename%.md}.html trimmt die .md trimmen und fügt .html
  • md2html ${filename} "${filename%.md}.html" macht den Job für jede Datei, die durch die übergebene Befehl finden.
  • -printf "%f\0" gibt Ihnen die Null-terminierte Datei Basisnamen, die nützlich ist, wenn Sie die Dateien in ein anderes Verzeichnis kopieren möchten.

Etwas kürzer vresion

find . -type f -name "*.md" -printf "%f\0" -exec bash -c 'md2html "$1" "/your/html/dir/${1%.md}.html"' _ {} \; 

ersetzen /your/html/dir/ mit your path

+0

zu tun, es ist nur das Drucken, keine Dateien von HTML-Erstellung – Albert

+0

@Albert Leider ein redundantes '-print0' im Drehbuch war, das ich gerade entfernt haben. Bitte versuche beide Versionen und lemme das Ergebnis – sjsam

+0

Noch eine Frage, wenn ich nur den Dateinamen ohne den ganzen Pfad aufnehmen möchte, was muss ich hinzufügen? – Albert

1

Man könnte es so etwas wie:

find path -type f -name "*.md" -exec sh -c 'md2html "${0}" > "${0%md}.html"' {} \; 
  • Pfad, den Sie Verzeichnis geben müssen, in dem Sie nach MD-Dateien suchen möchten.
  • Typ besagt, dass Sie nach Dateien und nicht nach Verzeichnissen suchen möchten.
  • Name besagt, dass Sie nach allen Dateien mit MD-Erweiterung suchen möchten.
  • exec würde den Befehl für Dateien ausführen, die gefunden wurden.
+0

Du kannst das leicht ändern, um eine Ausgabedatei von' foo.html' statt 'foo.md.html' zu erhalten : '-exec sh -c 'md2html" $ 0 "" $ {0% md} html "' {} \;'. Dadurch werden auch Probleme vermieden, wenn eine gefundene Datei Leerzeichen oder andere Zeichen enthält, die in ihrem Dateinamen zitiert werden müssen. – chepner

+0

Ja danke @chepner, das macht Sinn .... – SMA

Verwandte Themen