2013-07-07 21 views
1
while (defined($name = readdir $dh)) { 
    next unless -d "$root/$name"; 
    $dir=$root.$name."/"; 
    if(is_folder_empty($dir)){ 
     print"$dir is Empty\n"; 
     print"Do you want to delete it? 1-Yes 2-No\n"; 
     $aa=<STDIN>; 
     chomp $aa; 
     if($aa==1){ 
      $deleteregdir = "$dir"; 
      rmdir $deleteregdir; 
      print"Directory has been deleted!!\n"; 
     } 
    } 
    else 
    { 
     print"$dir is NOT Empty\n"; 
     $dir2=$dir; 
     opendir my $dh2, $dir2; 
     while (defined($name2 = readdir $dh2)) { 
      next unless -d "$dir2/$name2"; 
      $dd=$dir2.$name2."/"; 
      #print"$dd\n"; 
      if(is_folder_empty($dd)){ 
       print"$dd is Empty\n"; 
       print"Do you want to delete it? 1-Yes 2-No\n"; 
       $aa=<STDIN>; 
       chomp $aa; 
       if($aa==1){ 
        $deleteregdir = "$dir"; 
        rmdir $deleteregdir; 
        print"Directory has been deleted!!\n"; 
       } 
      } 
      else 
      { 
       print"$dd is NOT Empty\n"; 
      } 
     } 
    } 
} 

此代碼僅用於運行目錄及其子目錄。迭代停止在下一個級別。我想搜索所有空目錄。我想要的結構是這樣的,當我運行代碼時,所有空的目錄在從用戶獲得確認後被刪除。 在此先感謝。需要刪除用perl所有空的子目錄在Windows

+1

你知道子程序和遞歸嗎? – amon

+0

你嘗試過'File :: Find'嗎? – TLP

回答

2

如果你願意使用一個模塊,File::Util使這種事情變得非常簡單。

​​
+0

這需要您安裝File:Util Arrgghhh .... – anthony

0

使用

perl -MFile::Find -e"finddepth(sub{rmdir},'.')" 

,看到漂亮的explanation

相關問題