引用以前的answer,但在转换我的.md文件文件夹时仍有困难:
for i in src/*.md; do perl markdown/Markdown.pl --html4tags $i > output/${i%.*}.html; done; 不幸的是(对于我的测试文件“index.md”)它抛出了错误:
line 11: output/src/index.html: No such file or directory
我不确定如何让它直接输出到" output /index.html“。
有什么想法吗?(我对使用像pandoc这样的解决方案不感兴趣,只是想在bash中做到这一点)
发布于 2019-12-28 07:59:48
src/*.md的扩展将产生全部以src/开头的元素。您可以使用dirname删除文件的路径,只生成文件名sans目录。
由于您使用${ variable %match}替换模式将.md替换为.html,因此创建一个新变量(这里是$j )来保存basename的结果可能是最简单的。
for i in src/*.md; do j="$(basename $i)"; perl markdown/Markdown.pl --html4tags $i > output/${j%.*}.html; done; 发布于 2019-12-28 17:01:16
该错误消息表示,相对于执行命令的工作目录,目录output/src不存在。您可以执行以下操作
mkdir -p output/src; for i in ....发布于 2019-12-30 20:50:47
你可以避免for循环,利用现代的多核CPU,提前测试它会做什么,而不需要实际做任何事情,并像这样使用GNU Parallel并行完成所有事情:
parallel --dry-run perl markdown/Markdown.pl --html4tags {} \> output/{/.}.html ::: src/*md示例输出
perl markdown/Markdown.pl --html4tags src/a.md > output/a.html如果这看起来是正确的,那么再次运行它,但是没有--dry-run来真正地运行它。
https://stackoverflow.com/questions/59507038
复制相似问题