2016-11-17 56 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