使用find命令将markdown文件转换为html

使用find命令将markdown文件转换为html

假设我的硬盘上有扩展名为.md.

我想将所有这些文件转换为.htmlthroughfind-exec选项。

将 Markdown 文件转换为 html 的命令是

markdown readme.md > readme.html

我正在尝试使用类似的东西:

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

当然,上面的方法是行不通的。那么,我该如何仅使用find和来做到这一点exec

答案1

您需要在包含的构造周围加上引号,>因为它是 shell 特殊字符,如下所示:

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's-o选项,该选项指定输出文件的名称,即

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

这样做可以避免仅仅为了运行 markdown 而启动一个新的 shell。

不幸的是,正如 Bernhard 指出的那样,这样做会为您提供名为file.md.html而不是 的文件file.html,因此rush 的方法在这里更合适。

相关内容