ginokent Blog
RSS EN

ファイル名に最終更新日時の prefix を付与するワンライナー

ワンライナー

for f in *; do [ -f "$f" ] && mv "$f" "$(stat -f '%Sm' -t '%Y%m%dT%H%M%S' "$f")_$f"; done

カレントディレクトリ内の各ファイルについて stat で最終更新日時を取得し、YYYYMMDDTHHmmSS_ の形式で prefix を付与してリネームする。


Linux の場合は stat のオプションが異なる。

for f in *; do [ -f "$f" ] && mv "$f" "$(stat -c '%Y' "$f" | xargs -I{} date -d @{} '+%Y%m%dT%H%M%S')_$f"; done

実行例

$ ls
bar.md  baz.md  foo.md

$ for f in *; do [ -f "$f" ] && mv "$f" "$(stat -f '%Sm' -t '%Y%m%dT%H%M%S' "$f")_$f"; done

$ ls
20260218T143012_bar.md  20260220T091530_baz.md  20260215T220845_foo.md

どのファイルが新しいかが一目でわかるようになる。

何に使ったか

Claude Code の Plan エージェントが .claude/plans/ に吐くファイルは、ファイル名にランダムな UUID が使われており最終更新日時の情報が含まれない。プランファイルが溜まってくると、どれが直近のものか判別がつかなくなる。上記のワンライナーで一括リネームして解決した。