html - 在 Mac 上使用 Pandoc 递归目录解析

标签 html markdown pandoc

I found this question它回答了使用 Pandoc 执行批量转换的问题,但没有回答如何使其递归的问题。我预先规定我不是程序员,所以我在这里寻求一些帮助。

Pandoc 文档在有关将成批文件传递给可执行文件的细节上很薄弱,并且根据脚本,看起来 Pandoc 本身不能一次解析多个文件。下面的脚本在 Mac OS X 中工作得很好,但只处理本地目录中的文件并在同一个地方输出结果。

寻找 。 -name\*.md -type f -exec pandoc -o {}.txt {}\;

我使用以下代码得到了一些我希望得到的结果:

寻找 。 -name\*.html -type f -exec pandoc -o {}.markdown {}\;

这个简单的脚本,使用安装在 Mac OS X 10.7.4 上的 Pandoc 运行,将我运行它的目录中的所有匹配文件转换为 markdown,并将它们保存在同一目录中。例如,如果我有一个名为 apps.html 的文件,它会将该文件转换为与源文件位于同一目录中的 apps.html.markdown

虽然我很高兴它能进行转换,而且速度很快,但我需要它来处理位于一个目录中的所有文件,并将 Markdown 版本放入一组镜像目录中进行编辑。最终,这些目录位于 Github 存储库中。一个分支用于编辑,而另一个分支用于制作/发布。此外,这个简单的脚本保留了原来的扩展名并附加了新的扩展名。如果我再次转换回来,它会在 markdown 扩展名之后添加 HTML 扩展名,并且文件大小会越来越大。

从技术上讲,我需要做的就是能够解析一个分支目录并将其与生产分支目录同步,然后当所有更改、删除和新内容被验证正确时,我可以运行提交来发布更改。看起来 Find 命令可以处理所有这些,但我只是不知道如何正确配置它,即使在阅读了 Mac OS X 和 Ubuntu 手册页之后也是如此。

任何善意的智慧之言将不胜感激。

优化

最佳答案

创建以下 Makefile:

TXTDIR=sources
HTMLS=$(wildcard *.html)
MDS=$(patsubst %.html,$(TXTDIR)/%.markdown, $(HTMLS))

.PHONY : all

all : $(MDS)

$(TXTDIR) :
    mkdir $(TXTDIR)

$(TXTDIR)/%.markdown : %.html $(TXTDIR)
    pandoc -f html -t markdown -s $< -o $@

(注意:缩进行必须以制表符开头——这在上面可能不会出现,因为 Markdown 通常会去掉制表符。)

然后你只需要输入'make',它就会对工作目录中每个扩展名为.html的文件运行pandoc,在'sources'中生成一个 Markdown 版本。与使用“查找”相比,此方法的一个优点是它只会在自上次运行后发生更改的文件上运行 pandoc。

关于html - 在 Mac 上使用 Pandoc 递归目录解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11023543/

相关文章:

javascript - 如何使用 CSS 隐藏图像按钮以防止打印?

markdown - 使用 hugo 在 markdownified 字符串中编写一个不会转换为 <a/> 标记的链接

reactjs - 如何在React中添加支持数学方程的Markdown编辑器?

haskell - 是否可以将 asciidoc 与 hakyll 一起使用?

gitlab-ci - 使用 Gitlab CI 为 Hugo 站点创建 (HTML/PDF) Assets

javascript - FiveThirtyEight 风格的书本脚注

html - 将一个 div 放置在另一个 div 的中间

javascript - 如何添加 jQuery (SharePoint 2010)?

html - 如何使突出显示符合 508 标准?

pdf - pandoc Markdown 到 pdf : fixing missing character warnings?