0

プロジェクトには、名前が変更されているか、新しく作成されているか、直接コピーされているモジュールがいくつかあります。ここで、古いディレクトリ ファイルを削除します。だから私はクリーンアップのために同じ名前を持つすべてのファイルをパスで見つけたいと思っています。(カウント > 2)。それは、css、tpl、php、または js ファイルです。

すなわち

Main\Games\troy.php
Main\Games\Child Games\troy.php
Main\Games\Sports\troy.php

検索がメイン ディレクトリで行われる場合、検索は 3 つのファイルすべてとそのパスを返す必要があります。PHPで重複ファイルを見つける方法。

これは、mp3、3gp ファイルなど、ドライブ内の同じ名前の重複ファイルを見つけるのにも役立ちます。

4

1 に答える 1

0
function find_duplicate_files() {
    $names = scandir_recursive( 'D:\Main' );
    $files = array();
    foreach( $names as $name ) {
        if( count( $name ) > 1 ) {
            $files[] = $name;
        }
    }
    print_r( $files );
}

関数 scandir_recursive() は、指定されたディレクトリ ツリーを再帰的に解析し、キーがすべてのサブディレクトリで見つかったファイル名であり、値が対応するパスである連想配列を作成します。

function scandir_recursive( $dir, &$result = array() ) {
    $dir = rtrim($dir, DIRECTORY_SEPARATOR);

    foreach ( scandir($dir) as $node ) {
        if ($node !== '.' and $node !== '..') {
            if (is_dir($dir . DIRECTORY_SEPARATOR . $node)) {
                scandir_recursive($dir . DIRECTORY_SEPARATOR . $node, $result);
            } else {
                $result[$node][] = $dir . DIRECTORY_SEPARATOR . $node;
            }
        }
    }
    return $result;
}

// のように出力されます

Array
(
    [0] => Array
        (
            [0] => D:\Main\Games\troy.php
            [1] => D:\Main\Games\Child Games\troy.php
            [2] => D:\Main\Games\Sports\troy.php 
        )

    [1] => Array
        (
            [0] => D:\Main\index.php
            [1] => D:\Main\Games\index.php
        )
)

そこから、重複ファイルを特定できます。コードベースに多数のファイルがある場合に便利です。(そして、重複した音楽mp3ファイルを見つけるためによく使用しました:P )

于 2012-11-20T10:34:41.450 に答える