💬

数字連番になっているファイル名を一括で変更したい

2024/11/02に公開

はじめに

000.htmlや001.html,002.html とファイルが数字連番になっているのを 001.html,002.html,003.html と数字を1つ足して全てリネームしたい。

解決策

以下のスクリプト書いて、 sh ./rename.sh を実行する。

rename.sh
#!/bin/bash

# ファイルが存在するディレクトリに移動
cd ./target

# HTMLファイルを昇順に並べ、リストとして取得
files=($(ls *.html | sort))

# 一時的なファイル名にリネーム
counter=1
for old_name in "${files[@]}"
do
    # 一時ファイル名を3桁のゼロ埋めで作成(拡張子を一時的に変更)
    temp_name=$(printf "temp_%03d.tmp" "$counter")
    mv "$old_name" "$temp_name"
    ((counter++))
done

# 一時ファイル名から最終ファイル名にリネーム
counter=1
for temp_name in temp_*.tmp
do
    new_name=$(printf "%03d.html" "$counter")
    mv "$temp_name" "$new_name"
    echo "$temp_name$new_name にリネームしました。"
    ((counter++))
done

echo "ファイル名の変更が完了しました。"

Discussion