【ディレクターもプログラミングを学ぼう #10】任意のディレクトリに格納されているファイル名を一括でリネームする方法

LIGブログ

2018/10/5 06:00

こんにちは、マネージャーのジャックです。
本日も、プログラミングネタで記事を執筆していこうと思います。

今回は、PHPでディレクトリに格納されているファイル名を取得するスクリプトを書いていきたいと思います。

背景

とある案件で、任意のディレクトリに格納されているたくさんのファイルをリネームする必要があり、
手動ではなく効率よく自動でリネーム実現できないかなぁと思ったのが背景です。

普段ファイルをリネームする際は、 rename コマンドを利用するのですが、
この rename コマンドは複数ファイルを一括してリネームする事ができないという問題点があります。
それなら、ファイル名を一括取得した後に rename コマンドを叩くスクリプトを書いたらラクなのでは?
いや、ラクでしょう!!という事で、スクリプトをサッと書いていきたいと思います。

要件

たとえば、test というディレクトリに複数のテキストファイルが存在する場合で考えてみます。
tree コマンドを利用すると、ディレクトリ構造を視覚的に理解しやすくなります。

要件は、test ディレクトリに格納されているファイル名を一括で取得することです。
では、早速スクリプトを書いて行きましょう。

スクリプトを書いてみる

まず、該当ディレクトリ (test) 以下のファイルを全て取得するPHPコードを書いてみたいと思います。

ソースコード

実行結果

実行結果は下記のように出力されます。

いい感じでファイル名(ファイルパス)を出力する事ができました。

次に取得したファイル名に、接頭辞として日付を付与する処理を追加します。
例えば、test/sample1.txt というファイルを、test/20180608_sample1.txt というファイル名に変換します。

ソースコード

リネーム用のPHPコードは下記となります。

実行結果

実行結果は下記となります。

treeコマンドで確認するとしっかりとリネームされている事が確認できます。
とても便利ですね。

おわりに

今回は、PHPスクリプトで任意のディレクトリに格納されているファイルを一括でリネームするPHPスクリプトを実装しました。
サクッと自動化ツールを開発できるところもPHPの利点ですよね。
さて、次は何を作ろうかな~~。 それでは!!

あなたにおすすめ