JA EN

大量画像のファイル名一括変更術 - OS 標準機能からスクリプトまで

· 約 9 分で読めます

画像ファイル名の一括変更が必要な場面

デジタルカメラやスマートフォンで撮影した画像は、IMG_0001.jpgDSC_1234.NEF のような機械的なファイル名が付けられます。数枚であれば手動でリネームできますが、数百枚〜数千枚の画像を扱う場合は一括リネームが不可欠です。

一括リネームが必要な典型的なシーン:

ファイル名設計の基本原則:

OS 標準機能によるリネーム

追加ソフトウェアなしで利用できる OS 標準のリネーム機能を紹介します。少量〜中量 (数十枚程度) の画像に適しています。

macOS Finder:

Windows エクスプローラー:

Windows PowerRename (PowerToys):

制限事項:

OS 標準機能は手軽ですが、EXIF 情報に基づくリネーム (撮影日時をファイル名に含める等) や、複雑な命名規則の適用には対応していません。そのような場合はコマンドラインツールやスクリプトを使用します。

コマンドラインによる一括リネーム

コマンドラインツールは、複雑な命名規則の適用や大量ファイルの処理に最適です。再現性が高く、スクリプト化して繰り返し利用できます。

rename コマンド (Linux / macOS Homebrew):

ExifTool によるメタデータベースのリネーム:

mmv (Mass Move and Rename):

安全対策:

一括リネームは取り消しが困難なため、必ず事前にドライラン (-n オプション) で結果を確認し、可能であればバックアップを取ってから実行してください。

Python スクリプトによる高度なリネーム

Python を使えば、条件分岐、EXIF 情報の読み取り、データベース連携など、あらゆるカスタムロジックを組み込んだリネーム処理が可能です。

基本的な連番リネーム:

import os
from pathlib import Path

folder = Path("./images")
for i, file in enumerate(sorted(folder.glob("*.jpg")), start=1):
new_name = f"photo_{i:04d}.jpg"
file.rename(folder / new_name)

EXIF 撮影日時ベースのリネーム:

from PIL import Image
from PIL.ExifTags import TAGS
from pathlib import Path
from datetime import datetime

folder = Path("./images")
for file in folder.glob("*.jpg"):
img = Image.open(file)
exif = img._getexif()
if exif and 36867 in exif: # DateTimeOriginal
dt = datetime.strptime(exif[36867], "%Y:%m:%d %H:%M:%S")
new_name = dt.strftime("%Y%m%d_%H%M%S") + file.suffix.lower()
file.rename(folder / new_name)

重複回避の実装:

同一秒に複数枚撮影された場合のファイル名衝突を防ぐため、既存ファイルとの重複チェックとサフィックス追加のロジックを組み込みます:

def get_unique_name(folder, base_name, ext):
candidate = folder / f"{base_name}{ext}"
counter = 1
while candidate.exists():
candidate = folder / f"{base_name}_{counter:02d}{ext}"
counter += 1
return candidate

ドライランモードの実装:

実際のリネーム前に変更内容を確認できるドライランモードを必ず実装してください。--dry-run フラグで切り替え、リネーム前後のファイル名一覧を表示するだけの動作にします。本番実行前に必ずドライランで確認する習慣をつけましょう。

GUI リネームツールの活用

コマンドラインに不慣れなユーザーや、視覚的にプレビューしながらリネームしたい場合は、専用の GUI リネームツールが便利です。

macOS:

Windows:

クロスプラットフォーム:

GUI ツール選択のポイント:

リネーム時のトラブル防止と復元方法

一括リネームは便利ですが、誤った操作は取り返しのつかない結果を招くことがあります。トラブルを防止し、万が一の際に復元できる体制を整えましょう。

事前対策:

よくあるトラブルと対処:

復元方法:

リネームログの記録例 (Python):

import csv
log = []
for old, new in renames:
log.append({"old": old, "new": new})
with open("rename_log.csv", "w") as f:
writer = csv.DictWriter(f, fieldnames=["old", "new"])
writer.writeheader()
writer.writerows(log)

関連記事

大量画像の一括処理ワークフロー - 効率的なバッチ処理の設計と実装

数百〜数千枚の画像を効率的に一括処理するワークフローの設計方法を、コマンドラインツールとスクリプトの実例で解説します。

画像メタデータの全体像 - EXIF, IPTC, XMP を徹底解説

画像ファイルに埋め込まれるメタデータ規格 EXIF, IPTC, XMP の構造・用途・違いを体系的に解説し、実務での活用法を紹介します。

EXIF データとプライバシーリスク - 位置情報漏洩を防ぐ方法

写真に埋め込まれる EXIF データの種類とプライバシーリスクを解説。GPS 位置情報の漏洩事例と、安全に写真を共有するための EXIF 削除方法を紹介します。

写真ワークフロー自動化 - スクリプトで大量画像を効率処理する方法

数百〜数万枚の写真を効率的に処理するワークフロー自動化を解説。ImageMagick、sharp、ExifTool を使ったバッチ処理の実践テクニックを紹介します。

Retina ディスプレイ対応画像の作り方 - 高 DPI 環境での鮮明な表示を実現する

Retina や高 DPI ディスプレイで画像がぼやける原因と対策を解説。srcset 属性、image-set()、SVG 活用、最適な書き出し設定まで実践的に紹介します。

HEIC とは?iPhone 写真を JPG に変換する方法

iPhone が採用する HEIC フォーマットの特徴と、JPG への変換方法を解説。なぜ HEIC が使われるのか、互換性の問題と解決策を紹介します。

関連用語