2014-09-23

2014-09-23

私はこれを数ヶ月書いています。私が作成したファイルは、2011-06-13.markdown毎日のコンテンツと同じ名前の日付ファイルです。すべてをファイルに書き込むことにしましたが、アイテムを日付ヘッダー(ファイル名)で時系列で並べ替えたいと思います。これは、次の3つのファイルの別々のファイルを含むディレクトリが必要なことを意味します。

2014-09-21.markdown

私が書いたこれらの言葉を見てください!

2014-09-22.markdown

これは私が持っている深刻な執筆習慣です!

2014-09-23.markdown

stackexchangeに関する質問があります。くそー、これは役に立つコミュニティです!

結局、次のようなファイルのように見えます。

writing.markdown

2014-09-23

stackexchangeに関する質問があります。くそー、これは役に立つコミュニティです!

2014-09-22

これは私が持っている深刻な執筆習慣です!

2014-09-21

私が書いたこれらの言葉を見てください!

すべてのファイルは1つのディレクトリにあり、名前が正しく指定されました。私はfindとのどの組み合わせが私を助けることができると思いますcatが、正確にどのように役立つかはわかりません。

答え1

$file単一ファイル(今はそれを呼び出す)を使用して目的の操作を実行し、それを標準出力に印刷する方法は次のとおりです。

# prepend a "# " and remove the .markdown from the filename
sed 's/\.markdown//' <<< "# $file"
# print a blank line
echo
# output the file
cat "$file"

これで、実際に必要なものをループに含めて、forディレクトリ内の各マークダウンを繰り返します。その後、結果をファイルに出力します。

for file in *.markdown; do
    # prepend a "# " and remove the .markdown from the filename
    sed 's/\.markdown//' <<< "# $file"
    # print a blank line
    echo
    # output the file
    cat "$file"
    # separate the files with another blank line
    echo
done > writing.markdown

編集:待って、それはあなたが望むものではありません!順序を変更するには、findコマンドを使用してすべてのMarkdownファイルを検索し、出力をパイプして目的のsort -r逆順ソートを取得します。最後にそれを入力しreadて繰り返します。また、ファイル名の代わりにパスが返されるので、basenameファイル名から日付を抽出するときにそれを呼び出す必要があります。find

find -name '*.markdown' -not -name 'writing.markdown' | sort -r | while read file; do
    # prepend a "# " and remove the .markdown from the filename
    sed 's/\.markdown//' <<< "# $(basename $file)"
    # print a blank line
    echo
    # output the file
    cat "$file"
    # separate the files with another blank line
    echo
done > writing.markdown

Google で検索するのは本当に難しいので、一部のドキュメントへのリンクを含めました。ここに文字列がありますあなたがそれらに慣れていない場合。

答え2

このようにしてみてください。あなたが提供した正確な内容をsample1、、、sample2および3つのテキストファイルに作成しました。sample3このコマンドを入力すると:

cat sample1 sample2 sample3 >> sample4

次の操作を行うと、次の結果が表示されますcat sample4

2014-09-23
Asked question on stackexchange. Damn that is a helpful community!
2014-09-22.markdown
That's one serious writing habit I have!
2014-09-21.markdown
Look at all these words I've written!

>>に添付されsample4、使用するたびに1つずつ上書きされます>sample4したがって、お客様の場合は、次のコマンドを使用できます。

cat 2014-09-23.markdown 2014-09-22.markdown 2014-09-21.markdown >> writing.markdown

関連情報