Hugo の Hugoplate テーマで月別アーカイブを作成する方法について書いた。
[Hugo] Hugoplate テーマで月別アーカイブを作成する | 荒川仁志 公式サイト https://www.hitoshiarakawa.com/blogs/2024/2024-05-13_archive-pages-on-the-hugoplate-theme/
上記の方法を実現する前提としては個々の投稿ファイルにおいて、Front Matter で以下のような記述が必要となる。
archives: 2024/05
もし既存の記事が大量にある場合は、手入力ですべて入力するのは大変だ。そこで一括処理する方法を考えてみた。
環境:
・macOS Ventura 13.5(英語環境)
・Hugo v0.119.0
・Hugo テーマ:Hugoplate
(0)Hugo の content ディレクトリに cd で移動する。
(1)まずは実験をしてみよう。
以下のような Front Matter の記事(sample.md)があるとする。
---
title: 'テスト投稿'
author: Hitoshi Arakawa
date: 2022-12-21T11:51:13+09:00
url: /2022/12/21/test/
categories:
- 一般
- テスト
---
ここから date: の YYYY-MM だけをクリップボードにコピーし、さらに - を / に置換するコマンドは以下のようになる。
$ cat sample.md | grep "date:" | cut -b 7-13 | gsed "s/-/\//g" | pbcopy
これでクリップボードには 2022/12 がコピーされた。
(2)さらに archive: 2022/12 という形で同ファイルの6行目に挿入してみよう。
$ pbpaste | { read v ; gsed -i "6i archives: "$v"" sample.md ; }
(3)それでは1、2の作業をまとめて実行してみよう。
$ cat sample.md | grep "date:" | cut -b 7-13 | gsed "s/-/\//g" | { read v ; gsed -i "6i archives: "$v"" sample.md ; }
(4)次はディレクトリ内の md ファイルに対して一括で適用したい。
以下のようなシェルスクリプト(ファイル名は addArchive.sh とする)を作る。
#!/bin/sh
for i in *.md
do
cat ${i} | grep "date:" | cut -b 7-13 | gsed "s/-/\//g" | { read v ; gsed -i "6i archives: "$v"" ${i} ; }
done
(5)4に実行権限を与える。
$ sudo chmod 735 addArchive.sh
(6)5を実行することで一括処理できた。
$ ./addArchive.sh
参考:
Macでクリップボードの内容を正規表現で編集してペースト. gnu-sedをインストール brew install gnu-sed | by auxin01 | Medium
https://medium.com/@auxin.one/
WordPress から Hugo への移行(4)投稿日時を修正する|荒川仁志
https://note.com/hitoshiarakawa/n/nf931fc206f3a
Raspberry Pi で温度・湿度・気圧を Slack に投稿する|荒川仁志
https://note.com/hitoshiarakawa/n/ncfd8814f0a0d
シェルでお洒落に一括処理 - おしゃれな気分でプログラミング
https://neko-mac.blogspot.com/2022/02/blog-post.html
バスカヴィル家の犬 【新訳版】 シャーロック・ホームズ・シリーズ (創元推理文庫) | アーサー・コナン・ドイル, 深町 眞理子 | 英米の小説・文芸 | Kindleストア | Amazon
https://amzn.to/4bsGeVU