在Mac上使用Pandoc进行递归目录解析

Tyl*_*gas 4 html markdown pandoc

我发现这个问题可以解决使用Pandoc执行批量转换的问题,但它没有回答如何使其递归的问题.我事先规定我不是程序员,所以我在这里寻求一些帮助.

关于将批量文件传递给可执行文件的详细信息,Pandoc文档很少,并且基于脚本看起来Pandoc本身无法一次解析多个文件.下面的脚本在Mac OS X中运行正常,但只处理本地目录中的文件并在同一位置输出结果.

find . -name \*.md -type f -exec pandoc -o {}.txt {} \;

我使用以下代码来获得我希望得到的结果:

find . -name \*.html -type f -exec pandoc -o {}.markdown {} \;

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

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

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

任何善意的智慧都会受到高度赞赏.

TC

Joh*_*ane 11

创建以下内容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 $@
Run Code Online (Sandbox Code Playgroud)

(注意:缩进的行必须以TAB开头 - 这可能不会在上面提到,因为markdown通常会删除制表符.)

然后你只需要键入'make',它将在工作目录中的每个扩展名为.html的文件上运行pandoc,在'sources'中生成一个markdown版本.这种方法优于使用'find'的一个优点是它只会在自上次运行以来已更改的文件上运行pandoc.


And*_*ess 10

仅供记录:以下是我将一堆HTML文件转换为Markdown等价物的方法:

for file in $(ls *.html); do pandoc -f html -t markdown "${file}" -o "${file%html}md"; done
Run Code Online (Sandbox Code Playgroud)

当您查看-o参数中的脚本代码时,您将看到它使用字符串操作来删除md文件结尾的现有html.