使用脚本将多个目录中的多个 Markdown 文件转换为 HTML
Posted
技术标签:
【中文标题】使用脚本将多个目录中的多个 Markdown 文件转换为 HTML【英文标题】:Converting Multiple Markdown Files in Multiple Directories into HTML with a Script 【发布时间】:2012-01-20 10:06:49 【问题描述】:我目前有一个很大的目录,里面有很多子目录,每个子目录都有同名的markdown文件:
/big-directory/sub-directory-name-1/sub-directory-name-1.md
/big-directory/sub-directory-name-2/sub-directory-name-2.md
/big-directory/sub-directory-name-3/sub-directory-name-3.md
我想这样结束:
/big-directory/sub-directory-name-1/sub-directory-name-1.md
/big-directory/sub-directory-name-1/index.html
/big-directory/sub-directory-name-2/sub-directory-name-2.md
/big-directory/sub-directory-name-1/index.html
/big-directory/sub-directory-name-3/sub-directory-name-3.md
/big-directory/sub-directory-name-1/index.html
我正在尝试在 OS X 上编写一个 shell 脚本,它将在每个文件上运行 multimarkdown,但我很难弄清楚如何在不手动将它们全部放入脚本的情况下使循环在子目录上运行。提前感谢您的帮助。
【问题讨论】:
【参考方案1】:要获取/big-directory 下所有叶子目录的列表,可以使用this question 中的答案。
然后,你可以像这样构造一个while循环:
find /big-directory -type d | sort | awk '$0 !~ last print last last=$0 END print last' | while read dir
do
# Do something useful with $dir
echo $dir
done
这应该给你一个起点。
【讨论】:
【参考方案2】:我遇到了同样的问题。在阅读了这个问题和其他几个问题之后,加上大量的反复试验,我想出了以下解决方案:
#!/bin/bash
for dir in `find /big-directory -type d`
do
if [ -e $dir/file.md ]; #test if dir contains file
then
echo "converting $dir/file.md to HTML..."
markdown $dir/file.md > $dir/file.html
fi
done
我知道检查文件是否存在并不是绝对必要的,否则,脚本每次找到不包含该文件的目录时都会抛出错误。
【讨论】:
以上是关于使用脚本将多个目录中的多个 Markdown 文件转换为 HTML的主要内容,如果未能解决你的问题,请参考以下文章