Récupérer la liste des doublons d’un ensemble de répertoires

Il est parfois laborieux de parcourir l’ensemble de nos données afin de savoir si des doublons sont présents sur notre serveur ftp.

Ce script permet de parcourir tous les répertoires et sous-répertoires depuis le répertoire courant afin de cibler des doublons de noms dans chacun des répertoires. Comme vous le savez, la casse sur le système de fichier unix est importante, cela va donc détecter tous les fichiers qui ont un nom équivalent mais différent en casse.

Pour l’utiliser, copier le code qui suit dans un fichier php de votre serveur à l’endroit où vous le désirez et lancez ensuite la page.

<html>
<head>
    <meta charset="utf-8" />
    <style>
        body {background: #000;color:#FFF;vertical-align:bottom; font-family:"Lucida Console", Monaco, monospace;}
        #test {background: #000;color:#FFF; height:20px;}
        #trouve {background: #F00; color:#FFF;}
    </style>
    <script>
        var i=0;
        function blinker() {
            if (i++%2==0) {
                document.all.trouve.style.backgroundColor = "#000";
            } else {
                document.all.trouve.style.backgroundColor = "#F00";
            }
        }
        setInterval("blinker()",1000);
    </script>
</head>
<body>

Listing des doublons dans les répertoires et sous-répertoires :<br>
<div id="test"></div>
<div id="trouve"></div>

<?php

$nbDoublons = 0;

function scanDoublons($repertoire) {
    global $nbDoublons;
    //echo "scan le répertoire : $repertoire<br>";
    echo '<script> document.getElementById("test").innerHTML="'.utf8_encode($repertoire).'";</script>';
    $dir = scandir($repertoire);
    foreach ($dir as $fichier) {
        $ext = pathinfo($fichier,PATHINFO_EXTENSION);
        $basename = pathinfo($fichier,PATHINFO_BASENAME);
        $name = pathinfo($fichier,PATHINFO_FILENAME);
        $rep = pathinfo($fichier,PATHINFO_DIRNAME);
        $complet = $repertoire.'/'.$basename;

        if (is_dir($complet) && $basename!='.' && $basename!='..') { scanDoublons($complet);}

        if (!is_dir($complet) && $basename!='.' && $basename!='..') {
            foreach ($dir as $fichier2) {
                $ext2 = pathinfo($fichier2,PATHINFO_EXTENSION);
                $basename2 = pathinfo($fichier2,PATHINFO_BASENAME);
                $name2 = pathinfo($fichier2,PATHINFO_FILENAME);
                $rep2 = pathinfo($fichier2,PATHINFO_DIRNAME);
                $complet2 = $repertoire.'/'.$basename2;
                if (strcasecmp($fichier,$fichier2)==0) {
                    if (strcmp($fichier,$fichier2)!=0) {
                        //echo ('trouvé: '.$repertoire.'/'.$name.'.'.$ext.'<br>');
                        echo '<script> document.getElementById("trouve").innerHTML += "trouvé '.$complet.' <br>"; </script>';
                        $nbDoublons++;
                    }
                }
            }
        }
    }
}

scanDoublons('.');
$nbDoublons /= 2;
echo "Terminé... Il y a $nbDoublons doublon(s) sur l'ensemble des données.";

?>

</body></html>

Laisser un commentaire

 

*