Converting Multiple Markdown Files in Multiple Directories into HTML with a Script
我现在有一个大目录,里面有许多子目录,每个目录中都有相同名称的标记文件:
1 2 3 4 5 | /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 |
最后我想说的是:
1 2 3 4 5 6 7 8 | /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 |
我正在尝试在OSX上编写一个shell脚本,它将在每个文件上运行多标记,但是我很难弄清楚如何让循环在子目录上运行,而不手动将它们全部放入脚本中。事先谢谢你的帮助。
要获得下面/big目录的所有叶目录的列表,可以使用此问题中的答案。
然后,您可以这样构造一个while循环:
1 2 3 4 5 | 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 |
这应该给你一个起点。
我也遇到了同样的问题。在阅读了这个问题和其他几个问题,加上大量的尝试和错误之后,我提出了以下解决方案:
1 2 3 4 5 6 7 8 9 | #!/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 |
我知道严格地说,不必检查文件是否存在,否则,脚本每次找到不包含此文件的目录时都会抛出一个错误。