💬
数字連番になっているファイル名を一括で変更したい
はじめに
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