0

他のフォルダーが含まれているフォルダーがあります。他のフォルダーが含まれている場合と含まれていない場合があり、ファイルが存在する可能性があります。dir構造全体をスキャンして、100 MBを超えるファイルを見つけ、これらのファイルを最上位ディレクトリに移動したいと思います。

PHPでこれを達成するための良い方法は何ですか?

例えば:

/data/1/subfolder/id33/big_file.avi
/data/4/another_big_file.avi
/data/56/something/big_file2.avi

これらの3つのファイルをに移動する必要があります/data

4

3 に答える 3

2

ですべてのサブフォルダをスキャンするだけです

$it = new RecursiveDirectoryIterator("/data");
foreach(new RecursiveIteratorIterator($it) as $file) {
    //work with file (which is simplya a path here actually) here
}

そこに条件を追加します。

if (filesize($file) > 100e6) {
    rename($file, '/data/filename...');
}
于 2010-06-23T19:20:03.923 に答える
1
class MyFilterIterator extends FilterIterator {
    public function accept() {
        return $this->getSize() > 100*1024*1024;
    }
}

$it = new MyFilterIterator(new RecursiveIteratorIterator(
    new RecursiveDirectoryIterator("/data")));

foreach($it as $file) {
    //move ...
}
于 2010-06-23T19:18:51.270 に答える
0

SPLのDirectoryIteratorを使用してディレクトリを参照し、必要に応じてそのディレクトリに再帰する場合。次のステップに進むには、フィルターを使用してファイルサイズで結果をフィルター処理し、必要な処理を実行します。

大まかな例を次に示します。http ://www.phpro.org/tutorials/Introduction-to-SPL-DirectoryIterator.html#17

于 2010-06-23T19:18:55.253 に答える