批量重命名子目录的所有 gifs rename() php

bulk rename all gifs of subdirectories rename() php

我有很多,但是很多gif(大约五千张),在一个主文件夹里面的几个文件夹(类别名称)中gifs/

问题

我需要为一个简单的相关数字重命名所有的 gif。例如 image (24).gif213.gif (与主目录顺序相关)

我 return 整个 gif 列表都具有此功能

PHP 函数

 $dir = '../gifs';

function listFolderFiles($dir)
 {
   echo '<ol>';
    foreach (new DirectoryIterator($dir) as $i => $fileInfo) {
    if (!$fileInfo->isDot()) {
        echo '<li>' . $fileInfo->getFilename();
        if ($fileInfo->isDir()) {
            listFolderFiles($fileInfo->getPathname());
        }
        echo " - >".$i.'</li>';
       }
    }
    echo '</ol>';
  }
  listFolderFiles($dir);
  //rename('picture.gif', '1.gif');

这是一些文件结构,大多数文件的名称都有括号...

hugs
 animaton (11).gif
 animaton (12).gif
 animaton (13).gif
 animaton (17).gif
 animaton (18).gif
 animaton (19).gif
 animaton (22).gif
 animaton (23).gif
 animaton (26).gif
 animaton (27).gif
 animaton (29).gif
 animaton (31).gif
 animaton (34).gif
 animaton (35).gif
 animaton (4).gif
 animaton (41).gif
 animaton (43).gif
 animaton (46).gif
 animaton (49).gif
 animaton.gif
bored
 animaton (1).gif
 animaton (13).gif
 animaton (17).gif
 animaton (18).gif
 animaton (19).gif
 animaton (20).gif
 animaton (25).gif
 animaton (27).gif
 animaton (29).gif
 animaton (31).gif
 animaton (33).gif
 animaton (35).gif
 animaton (36).gif
 animaton (40).gif
 animaton (41).gif
 animaton (43).gif
 animaton (45).gif
 animaton (49).gif
 animaton (5).gif
 animaton (7).gif
 animaton (9).gif
wink
 animaton (11).gif
 animaton (12).gif
 animaton (21).gif
 animaton (27).gif
 animaton (3).gif
 animaton (35).gif
 animaton (36).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (43).gif
 animaton (8).gif
sleepy
 animaton (11).gif
 animaton (12).gif
 animaton (13).gif
 animaton (14).gif
 animaton (16).gif
 animaton (17).gif
 animaton (19).gif
 animaton (20).gif
 animaton (21).gif
 animaton (22).gif
 animaton (24).gif
 animaton (26).gif
 animaton (27).gif
 animaton (29).gif
 animaton (3).gif
 animaton (32).gif
 animaton (34).gif
 animaton (35).gif
 animaton (36).gif
 animaton (37).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (40).gif
 animaton (41).gif
 animaton (45).gif
 animaton (46).gif
 animaton (49).gif
 animaton (5).gif
 animaton (6).gif
 animaton (9).gif
 animaton.gif
love
 animaton (1).gif
 animaton (11).gif
 animaton (13).gif
 animaton (14).gif
 animaton (17).gif
 animaton (18).gif
 animaton (20).gif
 animaton (21).gif
 animaton (24).gif
 animaton (25).gif
 animaton (27).gif
 animaton (28).gif
 animaton (29).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (40).gif
 animaton (41).gif
 animaton (44).gif
 animaton (48).gif
 animaton (5).gif
 animaton (7).gif
 animaton (9).gif
 animaton.gif
claps
 animaton (1).gif
 animaton (10).gif
 animaton (11).gif
 animaton (12).gif
 animaton (13).gif
 animaton (15).gif
 animaton (16).gif
 animaton (17).gif
 animaton (19).gif
 animaton (20).gif
 animaton (21).gif
 animaton (22).gif
 animaton (23).gif
 animaton (25).gif
 animaton (28).gif
 animaton (3).gif
 animaton (30).gif
 animaton (31).gif
 animaton (34).gif
 animaton (35).gif
 animaton (38).gif
 animaton (39).gif
 animaton (4).gif
 animaton (40).gif
 animaton (41).gif
 animaton (42).gif
 animaton (43).gif
 animaton (44).gif
 animaton (46).gif
 animaton (47).gif
 animaton (49).gif
 animaton (5).gif
 animaton (6).gif
 animaton (7).gif
 animaton (8).gif
scared
 animaton (1).gif
 animaton (10).gif
 animaton (12).gif
 animaton (13).gif
 animaton (15).gif
 animaton (16).gif
 animaton (17).gif
 animaton (18).gif
 animaton (21).gif
 animaton (24).gif
 animaton (33).gif
 animaton (39).gif
 animaton (40).gif
 animaton (46).gif
 animaton (6).gif

免责声明!!

我已经测试过了,但我的行为可能不是你想要的。

此函数将递归遍历您提供的目录中的每个文件和子文件夹。然后它将按每个文件夹中的编号(连续计数)更改任何文件的名称。

我已经注释掉了 rename() 函数,以便在您对结果满意之前不重命名。一旦取消注释 rename() 函数,它将重命名每个文件。因此,如果它无法按您想要的方式工作,就没有回头路可走。这可能会对您的 folder/file 结构造成严重破坏。

您应该在继续之前备份您的文件以防万一。

$dir = '../gifs';

function listFolderFiles($dir){

  $results = new DirectoryIterator($dir);

  echo '<ul>';

  $count = 1;
  foreach($results as $fileInfo){

      if($fileInfo->isFile()){

        $oldFileName = $fileInfo->getPathname();
        $newFileName = $fileInfo->getPath() . '/' . $count . '.gif';

        //rename($oldFileName, $newFileName); //<-- Uncomment here to actually
        //rename your files.  Only do this when you are sure you are happy
        //with the results.

        echo '<li>' . 'File  Old: ' . $oldFileName . '  New: ' . $newFileName . '</li>';

        $count++;

      }

      if($fileInfo->isDir() && !$fileInfo->isDot()){

        echo '<li>' . 'Folder: ' . $fileInfo->getPathname() . '</li>';
        listFolderFiles($fileInfo->getPathname());

      }

  }

  echo '</ul>';



}


listFolderFiles($dir);