Nehmen wir an, ich habe Dateien auf meiner Festplatte mit den Erweiterungen als .md
.
Ich möchte all diese Dateien in .html
durch find
und die -exec
Option konvertieren .
Der Befehl zum Konvertieren einer Markdown-Datei in HTML lautet
markdown readme.md > readme.html
Ich versuche etwas zu benutzen wie:
find / -name "*.md" -type f -exec markdown {} > {}.html \;
Natürlich funktioniert das oben nicht. Also, wie mache ich das nur mit find
und exec
?
Antworten:
Sie müssen das Konstrukt in Anführungszeichen setzen,
>
da es sich um ein Shell-Sonderzeichen handelt:Dies wird auch die Dateien umbenennen, so dass Sie
foo.html
stattfoo.md.html
:quelle
{}
am Ende beide Befehle? Auch im zweiten Befehl ist es schwer für mich zu verfolgen, was passiert ist? Ich habe den${0%.md}/.html
Teil nicht verstanden .${0%.md}/.html
.{}
ist das Eingabeargument für densh -c
String und wird dort als aufgerufen$0
. Der Befehl, den Sie nicht verstehen, streift.md
und fügt hinzu.html
. Sie haben wahrscheinlich recht mit der Flucht aus dem.
.md
und Hinzufügen handelt,.html
aber ich würde gerne mehr darüber erfahren. Können Sie mich zu einem Wiki / Dokument weiterleiten, das dies erklärt?Um genau das zu erreichen, was Sie geschrieben haben, verwenden Sie
markdown
die-o
Option, die den Namen der Ausgabedatei angibt, d. HAuf diese Weise wird vermieden, dass eine neue Shell gestartet wird, nur um markdown auszuführen.
Leider, wie Bernhard betont, erhalten Sie auf diese Weise Dateien mit dem Namen
file.md.html
stattfile.html
, weshalb der Ansatz von rush hier angemessener ist.quelle
markdown
aber keine-o
Option. Ich habe vor dem Kommentieren noch einmal nachgesehen.pandoc -f markdown -t html -o...
.