2

ネイティブスクリプトを使用して、(およびそれ以下の)すべての.markdownファイル~/notes/をhtmlに変換しようとしています。Markdown.pl --html4tagsただし、Markdown.plhtmlをstoutに出力します。つまり、に変換するtest.markdowntest.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

すべてのファイルをhtmlに正常に変換し.markdownますが、もちろん、の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ます。

4

1 に答える 1

1

ブーム!

find ~/notes/ -name '*.markdown' | while read line
do
    Markdown.pl --html4tags $line > ${line/.markdown/.html}
done
于 2012-05-26T15:34:55.577 に答える