Joomla! Jostray : ダウンロードしたJMobleパッケージのファイル名の変更スク | ベンチャー企業 CIO: 池谷 義則ブログ&経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

ベンチャー企業 CIO: 池谷 義則ブログ&経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

SKYAVY, INC. CIOの池谷義則のブログ & ベンチャー企業 & 経営、ビジネス、プログラミング技術や便利なオープンソースの紹介

前回は、Joomla! Jostray : JMobleパッケージをUNIXコマンドでダウンロードしましたが、
[ファイル名]?format=raw

のファイル名を元の正常な名前に変更するのに、ファイル数が多くて、手動でやるのがばかばかしい。。。

なので、Shell Scriptはあまり得意ではないので、PHPで書いてみた。(あくまでも簡単に書いたので、 もっと良い方法があるのは明確ですが・・・)

function doit($dir = "JMobile/") {
echo "<br/><br/><br/><br/><strong>" . $dir . "</strong><br/>";
$files = scandir($dir, 1);
array_pop($files);
array_pop($files);

foreach($files as $file) {
if (is_dir($dir.$file)) {
doit($dir.$file."/");
}
else {
// match file name end with raw
if(preg_match('/raw$/', $file) && !preg_match('/rev=/', $file)) {
$pos = strpos($file, "?");
$newName = substr($file, 0, $pos);
echo $dir.$file . " => " . $dir.$newName . "<br/>";
copy($dir.$file, '1'.$dir.$file);
rename('1'.$dir.$file, '1'.$dir.$newName);
}
// delete files
else {
//echo $dir.$file . "<br/>";
unlink($dir.$file);
}
}
}
}

doit();

このファイルは、test.phpとして以下のように設置。RUNさせました。
|- 1JMobile/
|- JMobile/
|- test.php

このPHPスクリプトを走らせると、欲しいファイルを1JMobileのディレクトリに移動させて、正常なファイル名に名前を変換してくれます。

再帰的にファンクションを走りますので、全てのディレクトリ内のファイルを移動してくれているはず。