2016-11-17 58 views
0

我有一些目錄中包含的文件:重命名與它的目錄名文件

folder1/filename.jpg 
folder2/filename.pdf 
folder3/filename.jpg 

我想重新命名其相應的目錄名中的所有目錄中的所有文件(但保留其擴展名),如:

folder1/filename.jpg to folder1/folder1.jpg 
folder2/filename.pdf to folder2/folder2.pdf 
folder3/filename.jpg to folder3/folder3.jpg 

編輯:另外,我想複製所有重命名的文件到另一個目錄(如「allfiles」)。

我找到了a similar question in Perl language

我怎麼用PHP實現它?

+0

這是不一個問題:S ... – Asfo

+0

你到目前爲止做了什麼? –

回答

2

在這裏,你有辦法做到這一點:

<?php 

// Array with all subdirectories in directory 
$dirArray = array_filter(glob('/path/to/directory/*'), 'is_dir'); 

// $dir is the path to the subdirectory 
foreach ($dirArray as $dir) { 

    // $dirName has the future name of files in that subdirectory 
    $dirName = basename($dir); 

    // Take all the elements in the subdirectory (except '.' and '..') 
    $filesArray = array_diff(scandir($dir), array('.', '..')); 

    $i = 0; 
    foreach ($filesArray as $file) { 
     // Take the file extension for the rename method 
     $fileExtension = pathinfo($file, PATHINFO_EXTENSION); 

     $oldName = $dir . "/" . $file; 
     $newName = $dir . "/" . $dirName . "-" . $i . "." . $fileExtension; 

     rename($oldName, $newName); 
     $i++; 
    } 
} 

如果你確信你將不得不在每個子目錄只有一個文件,你可以使用此行來$newName

$newName = $dir . "/" . $dirName . "." . $fileExtension; 
+0

非常感謝,這就是我要找的。你能告訴我如何將所有重命名的文件複製到另一個文件夾? – Sifur

+0

複製或移動? @Sifur – nanocv

+0

複製並保留原始文件的位置。 – Sifur