我正在尝试使用原生.markdown
脚本将~/notes/
(及以下)中的每个Markdown.pl --html4tags
文件转换为html。但是,Markdown.pl
会将html打印到stout,这意味着要将test.markdown
转换为test.html
,我需要运行:Markdown.pl --html4tags test.markdown > test.html
。
我一直在搞清楚如何将管道合并到递归find -exec
或find ... | xargs
函数中。我提出的最好的是:
for i in `find ~/notes/ -type f -name "*.markdown"` ; do
Markdown.pl --html4tags $i > ${i}.html ;
done
它成功地将每个.markdown
文件转换为html,但当然看起来像test.markdown.html
而不是test.html
。
基本上,我需要做一些事情,比如将${i}.markdown
转换为${i}.html
,但我无法弄清楚如何在函数中对其进行编码。谢谢你的帮助。
编辑我找到了一种方法来修复上述脚本,使用basename
(我刚刚发现):
for i in `find ~/notes/ -type f -name "*.markdown"` ; do
Markdown.pl --html4tags $i > `basename $i .markdown`.html ;
done
这基本上将每个.markdown
文件转换为html,同时还剥离.markdown
扩展名,然后添加.html
扩展名。
我很想知道是否有更好的方法可以做到这一点,例如使用find -exec
。
答案 0 :(得分:1)
轰!
find ~/notes/ -name '*.markdown' | while read line
do
Markdown.pl --html4tags $line > ${line/.markdown/.html}
done