私はこれを数ヶ月書いています。私が作成したファイルは、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