findコマンドを使用してマークダウンファイルをhtmlに変換する

findコマンドを使用してマークダウンファイルをhtmlに変換する

私のハードドライブに拡張機能があるとしましょう.md

.htmlこれらのファイルをすべてスルーfindとオプションに変換したいと思います-exec

Markdownファイルをhtmlに変換するコマンドは次のとおりです。

markdown readme.md > readme.html

私は次のようなものを使用しようとしています:

find / -name "*.md" -type f -exec markdown {} > {}.html \;

もちろん上記の方法は通じません。それではfind、andだけを使用してこれをどのように実行できますかexec

答え1

>含まれる構文は次のようにシェル特殊文字であるため、引用符で囲む必要があります。

find / -name "*.md" -type f -exec sh -c 'markdown "$0" > "$0.html"' {} \;

これによりファイル名も変更されるので、foo.html代わりに次のように終了しますfoo.md.html

find / -name "*.md" -type f -exec sh -c 'markdown "${0}" > "${0%.md}.html"' {} \;

答え2

作成した内容を正確に達成する方法は、出力ファイルの名前を指定するmarkdownオプションを使用することです。-o

find / -name "*.md" -type f -exec markdown -o {}.html {} \;

これにより、マークダウンを実行するために新しいシェルを起動することを回避できます。

残念ながら、Bernhardが指摘したように、これを行うと代わりにfile.md.html名前付きファイルが提供されるため、file.htmlここでは緊急のアプローチがより適しています。

関連情報