【问题标题】:Need to delete all empty subdirectories using perl in windows需要在windows中使用perl删除所有空子目录
【发布时间】:2013-07-05 00:13:32
【问题描述】:
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";
            }
        }
    }
}

此代码仅针对目录及其子目录运行。迭代在下一级停止。我想搜索所有空目录。我希望结构是这样的,当我运行代码时,在得到用户的确认后,所有为空的目录都将被删除。 提前致谢。

【问题讨论】:

  • 你知道子程序和递归吗?
  • 你试过File::Find吗?

标签: windows perl directory-structure file-handling


【解决方案1】:

如果你愿意使用一个模块,File::Util 让这种事情变得非常简单。

use strict;
use warnings;

use File::Util;

my $path = '...';

my $fu         = File::Util->new();
my @all_dirs   = $fu->list_dir($path, '--recurse', '--dirs-only');
my @empty_dirs = grep { not $fu->list_dir($_) } @all_dirs;

【讨论】:

    【解决方案2】:

    使用

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

    看看不错的explanation

    【讨论】:

      猜你喜欢
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多