【问题标题】:Converting Multiple Markdown Files in Multiple Directories into HTML with a Script使用脚本将多个目录中的多个 Markdown 文件转换为 HTML
【发布时间】: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,但我很难弄清楚如何在不手动将它们全部放入脚本的情况下使循环在子目录上运行。提前感谢您的帮助。

【问题讨论】:

    标签: html bash scripting markdown


    【解决方案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
      

      我知道检查文件是否存在并不是绝对必要的,否则,脚本每次找到不包含该文件的目录时都会抛出错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-04
        • 1970-01-01
        • 1970-01-01
        • 2020-06-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多