+ -
当前位置:首页 → 问答吧 → 如何删除多文件夹下重复的文件?

如何删除多文件夹下重复的文件?

时间:2011-05-24

来源:互联网

我想实现以下这样的效果:
3.png (6.01 KB)
2011-5-24 10:29


望高手们能修改下以下代码:
以下代码只能删除当前目录下重复的文件,但不能删除多文件夹下重复的文件。
<?php
header('Content-Type: text/html; charset=gb2312');
function searchFiles( $srcPath = '', $dstFile = '*', $subDir = false ){
    static $files = array();
    if ( !empty( $srcPath ) ) $srcPath = rtrim( $srcPath, '/' ).'/';
    $file = glob( $srcPath.$dstFile );
    if ( !empty( $file ) ) $files = array_merge( $files, $file );
    if ( $subDir ){
        foreach( glob( $srcPath.'*', GLOB_ONLYDIR ) as $dir ){
            searchFiles( $dir, $dstFile, $subDir );
        }
    }
    return $files;
}
$files = searchFiles( './', '*.txt', true );
foreach( $files as $file ){
    if ( !is_writable( $file ) ) continue;
    $newname  = preg_replace( '/(_\d*)*\.txt+$/i', '.txt', $file );
    if ( is_file( $newname ) ) unlink($file);//如果已经存在重命名后的文件,立即删除。
    rename( $file, $newname );//执行重命名
}
?>

作者: lenya   发布时间: 2011-05-24

php代码偶不会写
按偶的理解
定义一个数组,用于保存文件名列表
然后开始遍历所有文件夹
一、获取文件名,然后在数组中循环判断一下,
            文件名如果已存在,则将该文件删除(说明同名的文件以前已出现过)
                         文件名如果不存在,则将该文件名保存到数组中(说明该文件是第一次出现)

作者: ribut9225   发布时间: 2011-05-25