我试图将整个目录从html转换为markdown.目录树非常高,因此有两个和三个级别的文件嵌套.
在回答这个问题时,John MacFarlane建议使用以下内容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)
现在,这似乎没有进入子目录.有没有简单的方法来修改它,以便它将处理整个树?
我不需要这个make.我正在寻找的是一种获取初始目录的镜像的方法,其中每个html文件被pandoc该文件上运行的输出所取代.
(我怀疑这些方面的某些内容应该会有所帮助,但是如果我试图自己解决这个问题,我就不会有信心我不会破坏它.我说的是文盲GNU make.)
Luk*_*ton 30
既然你提到你不介意不使用make,你可以试试bash.
我修改了这个答案的代码,在父目录中使用:
find ./ -iname "*.md" -type f -exec sh -c 'pandoc "${0}" -o "${0%.md}.pdf"' {} \;
Run Code Online (Sandbox Code Playgroud)
它在我测试时起作用,所以它应该适合你.
根据请求任何想法如何指定输出文件夹?(html用作原始文件和md输出):
find ./ -iname "*.html" -type f -exec sh -c 'pandoc "${0}" -o "./output/$(basename ${0%.html}.md)"' {} \;
Run Code Online (Sandbox Code Playgroud)
我测试了这个,它对我有用.
编辑:根据注释,{} \;使用时find和-exec选项用作文件名所在的或多或少的占位符.就像在它中展开发现放在命令中的文件名一样.该\;结束了-exec.请参阅此处以获取更多解释
| 归档时间: |
|
| 查看次数: |
9516 次 |
| 最近记录: |