Makefile 使用Mac上的pandoc将文件夹中的所有文件转换为md

Makefile 使用Mac上的pandoc将文件夹中的所有文件转换为md,makefile,pandoc,Makefile,Pandoc,我正在尝试将整个目录从html转换为markdown。目录树相当高,因此有两层和三层嵌套的文件 在回答时,约翰·麦克法兰建议使用以下Makefile: TXTDIR=sources HTMLS=$(wildcard *.html) MDS=$(patsubst %.html,$(TXTDIR)/%.markdown, $(HTMLS)) .PHONY : all all : $(MDS) $(TXTDIR) : mkdir $(TXTDIR) $(TXTDIR)/%.markdo

我正在尝试将整个目录从html转换为markdown。目录树相当高,因此有两层和三层嵌套的文件

在回答时,约翰·麦克法兰建议使用以下
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 $@
TXTDIR=源
HTMLS=$(通配符*.html)
MDS=$(patsubst%.html,$(TXTDIR)/%.markdown,$(HTMLS))
冒牌货:全部
全部:$(MDS)
$(TXTDIR):
mkdir$(TXTDIR)
$(TXTDIR)/%。降价:%.html$(TXTDIR)
pandoc-f html-t降价-s$<-o$@
现在,它似乎没有进入子目录。有没有简单的方法来修改它,使它能够处理整个树

我不需要把它放在
make
中。我所要寻找的是一种获得初始目录镜像的方法,其中每个
html
文件都被在该文件上运行
pandoc
的输出所替换


(我怀疑一些事情会有帮助,但我很难相信如果我尝试自己去做,我不会破坏东西。当涉及到
GNU make
)时,我是文盲。)

既然你提到你不介意不使用
make
,你可以试试
bash

我修改了此代码,在父目录中使用:

find ./ -iname "*.md" -type f -exec sh -c 'pandoc "${0}" -o "${0%.md}.pdf"' {} \;
当我测试它时,它工作了,所以它应该适合你

根据请求如何指定输出文件夹?(使用
html
作为原始文件,使用
md
作为输出):

我已经测试过了,它对我很有效

编辑:根据注释,
{}
find
一起使用时,
-exec
选项或多或少用作文件名应位于的位置的占位符。如中所示,它将展开要放置在命令中的文件名。
\结束
-exec
。请参阅以了解更多解释。

我就是这样做的

files=($(find ${INPUT_FOLDER} -type f -name '*.md'))
for item in ${files[*]}
do
  printf "   %s\n" $item
  install -d ${DIR}/build/$item
  pandoc $item -f markdown -t html -o ${DIR}/build/$item.html;
  rm -Rf ${DIR}/build/$item
done

如果你不知道
make
,也许你只是试着用你最喜欢的语言编写你自己的脚本,例如Python或Ruby?(很抱歉现在帮不上忙)是的,我可以试试看。谢谢。我只是想澄清一下。为了让它做我想要的事情(即获取
html
文件并输出
md
文件),它应该是:
find./-iname“*.html”-type f-exec sh-c'pandoc”${0}”-o“${0%.html}.md”{},对吗?你知道如何指定输出文件夹吗?(实际上,它只是将
md
文件与相应的
html
文件放在同一个文件夹中。这会在我的机器上导致以下错误:
pandoc::openFile:不存在(没有这样的文件或目录)
。找到了文件,但
${0}
似乎是空的。那`{}是什么呢\;`最后怎么办?让我知道我是否应该打开一个新问题,但是当我运行这个pandoc时,找不到任何包含的文件。例如,我的子文件夹中有html和带有图像的标记文件(相对于.md文件)。
![Notes/Untitled.png](Notes/Untitled.png)
给出警告:
无法获取资源“Notes/Untitled.png”:PandocResourceNotFound“Notes/Untitled.png”
但是,如果我直接在markdown/html文件上运行pandoc,它可以在子文件夹中找到图像。
files=($(find ${INPUT_FOLDER} -type f -name '*.md'))
for item in ${files[*]}
do
  printf "   %s\n" $item
  install -d ${DIR}/build/$item
  pandoc $item -f markdown -t html -o ${DIR}/build/$item.html;
  rm -Rf ${DIR}/build/$item
done