[Hugo] Hugoplate テーマで月別アーカイブを作成する2

Hitoshi Arakawa | 2024/05/14 Tue 04:09

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