2011-12-14 59 views
2

我现在有一个很大很大的目录中充满了许多子目录与同名的降价文件中的每个:转换多个降价文件在多个目录到HTML与脚本

/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,但我有困难,搞清楚如何使循环运行在子目录中,而无需手动把它们全部进入脚本。预先感谢您的帮助。

回答

2

要获取/ 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 

这应该给你一个起点。

0

我遇到了同样的问题。阅读这个问题和其他几个人,再加​​上大量的试验和错误后,我想出了以下解决方案:

#!/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 

我知道,这不是绝对必要的检查文件是否存在,但除此之外,脚本每次找到一个不包含此文件的目录时都会引发错误。

相关问题