ファイル名がそのファイルの日付になるようにリネームする方法
これは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
で参照できます.