PHP | ディレクトリ内のファイルを一括で連番リネームする方法

PHP,PHP ファイル操作

PHPを使って特定のディレクトリ内にあるファイルを一括でリネームする方法を紹介しています。

ファイルを一括で連番リネームする

ディレクトリ内のファイルを連番でリネームするにはforeach()、glob()を使ってディレクトリ内のファイルを取得します。

実行するphpファイルと同じ階層にあるディレクトリ内のtxtファイルを連番で一括リネームする場合は以下のようになります。

foreach (glob('dir/*.txt') as $i => $file) {
	rename($file, 'dir/' . $i . '.txt');
}

連番付けを1から始める場合

$iにはインデックス番号が入ります。
0から始まりますので連番を1からにする場合は$iに1を足します。

foreach (glob('dir/*.txt') as $i => $file) {
	rename($file, 'dir/' . ($i + 1) . '.txt');
}

削除前のファイルを残す場合

削除前のファイルを残しておきたい場合、rename()ではなくcopy()を使えば問題ないかと思います。

foreach (glob('dir/*.txt') as $i => $file) {
	copy($file, 'dir/' . ($i + 1) . '.txt');
}

新しいファイルと古いファイルが混在してしまうので別のディレクトリにコピーします。

foreach (glob('dir/*.txt') as $i => $file) {
	copy($file, 'dir-sub/' . ($i + 1) . '.txt');
}

PHP,PHP ファイル操作

Posted by Yousuke.U