ottijp blog

ファイル名がそのファイルの日付になるようにリネームする方法

  • 2024-12-11

これはInfocom Advent Calendar 2024 11日目の記事です.

ファイル名をがそのファイルの日付になるようにリネームするシェルスクリプトを書きました.

環境

  • mac: 14.7 (Sonoma)

シェルスクリプト

rename-by-date.sh
#!/bin/bash

file="$1"

renamed_name=$(dirname "$file")/$(date -r "$file" "+%Y%m%d_%H%M%S").${file##*.}

mv -i "$file" "$renamed_name"

このシェルスクリプトは1つのファイルパスを引数として受け取り,ファイル日付を元にYYYYMMDD_hhmmss.extの書式のファイル名に変更します.(extは元の拡張子です.)

実行例

$ ls -ltD %Y-%m-%dT%H:%M:%S files
total 0
-rw-r--r--@ 1 otti  staff  0 2024-12-10T19:52:30 F579FA12-C65E-441D-8900-CBB5BDBF328B.txt
-rw-r--r--@ 1 otti  staff  0 2024-10-15T15:39:21 5C935113-DEBC-4B44-9E65-13FFBF112A2D.txt
-rw-r--r--@ 1 otti  staff  0 2024-06-20T01:31:33 11F13BDA-6716-4CD3-90AC-C3693A85F16A.txt
-rw-r--r--@ 1 otti  staff  0 2024-03-13T23:03:10 55EB3F3C-67D8-4051-88BC-AA0D6FDEE148.txt
-rw-r--r--@ 1 otti  staff  0 2023-01-10T23:08:35 0F689224-9E0D-4969-A4B8-4CED5BA6A61C.txt

$ for f in files/*.txt; do ./rename-by-date.sh $f; done

$ ls -ltD %Y-%m-%dT%H:%M:%S files
total 0
-rw-r--r--@ 1 otti  staff  0 2024-12-10T19:52:30 20241210_195230.txt
-rw-r--r--@ 1 otti  staff  0 2024-10-15T15:39:21 20241015_153921.txt
-rw-r--r--@ 1 otti  staff  0 2024-06-20T01:31:33 20240620_013133.txt
-rw-r--r--@ 1 otti  staff  0 2024-03-13T23:03:10 20240313_230310.txt
-rw-r--r--@ 1 otti  staff  0 2023-01-10T23:08:35 20230110_230835.txt

dateの引数"+%Y%m%d_%H%M%S"を変更すれば任意の書式のファイル名に変更できます. この引数の説明はman strftimeで参照できます.


ottijp
都内でアプリケーションエンジニアをしています
© 2024, ottijp