Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Rekursive Dateisuche :::: Mit exec oder RecursiveDirectoryIterator unterschiedlich

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.11.2002
    Ort
    Obertshausen
    Beiträge
    87

    Rekursive Dateisuche :::: Mit exec oder RecursiveDirectoryIterator unterschiedlich

    Hallo zusammen,

    ich hatte bisher in einem Skript einen exec-Befehl, um rekursiv alle Dateien in einem Verzeichnis zu finden.

    Parameter z.B.
    $basedir= ".test/";
    $size=100;
    $filter="jpg";
    $maxdepth=2;

    Code:
    //// Find Suche ////
    $command='/opt/bin/find  '.$basedir.' -size +'.$size.' -iname "*.'.$filter.'" -maxdepth '.$maxdepth;
    exec("$command",$results);
    $count=count($results);
    print "Anzahl gefundener Dateien $count";
    
    //// END Find Suche ////
    Das klappt auch prima.

    Allerdings wollte ich nun das Ganze ohne den exec nur mit PHP-Mitteln machen und habe daher folgenden Code genommen:

    Code:
    //// PHP Suche ////
    
    $it = new RecursiveDirectoryIterator($basedir);
    foreach(new RecursiveIteratorIterator($it) as $file) {
    $path_parts = pathinfo($file);
    preg_match_all("[\/]",$file, $matches);
            if (filesize($file)/1024 > $size && $path_parts['extension'] == $filter && count($matches[0]) < $maxdepth)
    {
    $results[] = $file;
    }
    }
    
    $count=count($results);
    print "Anzahl gefundener Dateien $count";
    //// END PHP Suche ////
    Dummerweise ist das Ergebnis der Suche nicht identisch es werden häufig weniger Dateien gefunden als mit der ersten Variante.

    Mir fehlen im Moment die Ideen, woran das liegen könnte.

    Sachdienliche Hinweise bitte hier posten. Danke
    Celindir
    May the source be with you...

    www.celindir.de

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Falsche Parent Klasse
    PHP-Code:
    $mp dirname__FILE__ );
    $dirh = new DirectoryIterator$mp );
    foreach ( 
    $dirh as $f ) {
        
    $Depth = ( substr_count$f->getPathname(), "/" ) - substr_count$mp"/" ) );
        if ( ! 
    $f->isDot() ) {
          
    var_dump"<pre>"
                    
    $f->getFilename(),
                    
    $f->getPathname(),
                    
    $Depth$f->getType(),
                    
    $f->getMTime(),
                    
    "</pre>" );
        } else
            continue;
    }
    unset( 
    $dirh );
    clearstatcache(); 
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •