• 09-01-2016, 12:51:05
    #1
    Merhaba arkadaşlar,

    Küçük bir yardıma ihtiyacım oldu. Bilen yardım edecek birisi varsa minnettar olurum. 2 gündür kafayı yemek üzereyim, bakmadığım kaynak kalmadı...

    Basit bir işlem yaptırmak istiyorum ama php bilgim olmadığı için tıkanıyorum.

    linux centos sunucumda 2 klasör olduğunu düşünün

    a klasörünün içindeki dosyalar b klasörünün içinde var ise, bu dosyaları a klasöründen silmek istiyorum...

    Bunu nasıl yapabilirim.

    A klasöründe 100k, B klasöründe de 70K dosya var...

    Yani işlem sonunda A klasöründe 30 K dosya kalması gerekiyor...

    Şimdiden çok teşekkürler
  • 09-01-2016, 13:35:35
    #2
    Dosya isimlerine göre silmek için;

    <?php
    
    $dir1 = new DirectoryIterator(__DIR__ . '/a');
    $dir2 = new DirectoryIterator(__DIR__ . '/b');
    
    $files = array();
    
    foreach ($dir2 as $file) {
      $files[] = $file->getFilename();
    }
    
    foreach ($dir1 as $file) {
      if ($file->isFile() && in_array($file->getFilename(), $files)) {
        unlink($file->getPathname());
      }
    }
    çalıştırmadan önceki klasör yapısı;
    .
    ├── a
    │** ├── 20.txt
    │** ├── 21.txt
    │** ├── 22.txt
    │** ├── 23.txt
    │** ├── 24.txt
    │** └── 25.txt
    ├── b
    │** ├── 22.txt
    │** ├── 23.txt
    │** ├── 24.txt
    │** └── 25.txt
    └── remove.php
    
    2 directories, 11 files
    çalıştırdıktan sonra;
    .
    ├── a
    │** ├── 20.txt
    │** └── 21.txt
    ├── b
    │** ├── 22.txt
    │** ├── 23.txt
    │** ├── 24.txt
    │** └── 25.txt
    └── remove.php
    
    2 directories, 7 files
  • 09-01-2016, 13:47:27
    #3
    jebias adlı üyeden alıntı: mesajı görüntüle
    Dosya isimlerine göre silmek için;

    <?php
    
    $dir1 = new DirectoryIterator(__DIR__ . '/a');
    $dir2 = new DirectoryIterator(__DIR__ . '/b');
    
    $files = array();
    
    foreach ($dir2 as $file) {
      $files[] = $file->getFilename();
    }
    
    foreach ($dir1 as $file) {
      if ($file->isFile() && in_array($file->getFilename(), $files)) {
        unlink($file->getPathname());
      }
    }
    çalıştırmadan önceki klasör yapısı;
    .
    ├── a
    │** ├── 20.txt
    │** ├── 21.txt
    │** ├── 22.txt
    │** ├── 23.txt
    │** ├── 24.txt
    │** └── 25.txt
    ├── b
    │** ├── 22.txt
    │** ├── 23.txt
    │** ├── 24.txt
    │** └── 25.txt
    └── remove.php
    
    2 directories, 11 files
    çalıştırdıktan sonra;
    .
    ├── a
    │** ├── 20.txt
    │** └── 21.txt
    ├── b
    │** ├── 22.txt
    │** ├── 23.txt
    │** ├── 24.txt
    │** └── 25.txt
    └── remove.php
    
    2 directories, 7 files
    Dostum süpersin. Canavar gibi çalışıyor.

    Yüklü klasörlerde henüz denemedim ama sorun çıkacağını zannetmiyorum.

    Çok teşekkür ederim büyük dertten kurtardın