Re: Renaming Directories

From: Date: Mon, 21 Mar 2005 14:07:02 +0000
Subject: Re: Renaming Directories
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-211186@lists.php.net to get a copy of this message
Daniel Schierbeck wrote:
I've made a small PHP script that renames the files and folders in my music library, to make them more linux-friendly. I'm running PHP 5.0.3 on version 2.6.9 kernel. What's happening is that all files and folders are renamed, except for folders whose names consist of one word only (such as Toto), which is still with a capital T. Here is the script and the result I'm getting: <?php error_reporting(E_ALL | E_STRICT); header('Content-Type: text/plain'); function clean_filename ($str) { $str = strtolower($str); $str = str_replace(' - ', '-', $str); $str = str_replace(' ', '_', $str); $str = str_replace('\'', '', $str); return $str; } function parse_dir ($dir_name) { $dir = opendir($dir_name); while (false !== ($file = readdir($dir))) {
    if ($file != '.' && $file != '..') {
      $path_old = $dir_name  . $file;
      $path_new = $dir_name . clean_filename($file);
      echo "renaming $path_old to $path_new... ";
      echo rename($path_old, $path_new) ? "done\n" : "failed\n";
      if (is_dir($file)) parse_dir($path_old);
    }
} closedir($dir); } parse_dir('/shared/music/'); ?> renaming /shared/music/dire_straits to /shared/music/dire_straits... done renaming /shared/music/johnny_winter to /shared/music/johnny_winter... done renaming /shared/music/pink_floyd to /shared/music/pink_floyd... done renaming /shared/music/ten_years_after to /shared/music/ten_years_after... done renaming /shared/music/the_doors to /shared/music/the_doors... done renaming /shared/music/Santana to /shared/music/santana... done renaming /shared/music/the_jimi_hendrix_experience to /shared/music/the_jimi_hendrix_experience... done renaming /shared/music/the_velvet_underground to /shared/music/the_velvet_underground... done renaming /shared/music/tim_christensen to /shared/music/tim_christensen... done renaming /shared/music/dizzy_mizz_lizzy to /shared/music/dizzy_mizz_lizzy... done renaming /shared/music/Toto to /shared/music/toto... done renaming /shared/music/Cream to /shared/music/cream... done renaming /shared/music/Filopahpos to /shared/music/filopahpos... done renaming /shared/music/bob_dylan to /shared/music/bob_dylan... done renaming /shared/music/dinojax to /shared/music/dinojax... done renaming /shared/music/red_hot_chili_peppers to /shared/music/red_hot_chili_peppers... done renaming /shared/music/peter_frampton to /shared/music/peter_frampton... done renaming /shared/music/louis_armstrong-what_a_wonderful_world.mp3 to /shared/music/louis_armstrong-what_a_wonderful_world.mp3... done As you can see, the rename() returns TRUE, but it doesn't rename the folder. I hope you guys can help me out, because otherwise I'll have to do it manually (which I'm too lazy to even consider.) Daniel
Ooops, that should've been parse_dir($path_new) instead of parse_dir($path_old).

« previous php.general (#211186) next »