需要在windows中使用perl删除所有空子目录 while(已定义($name=readdir$dh)){ 下一个除非-d“$root/$name”; $dir=$root.$name.“/”; 如果(文件夹为空($dir)){ 打印“$dir为空\n”; 打印“是否要删除它?1-是2-否\n”; $aa=; 咀嚼$aa; 如果($aa==1){ $deleteregdir=“$dir”; rmdir$deleteregdir; 打印“目录已被删除!!\n”; } } 其他的 { 打印“$dir不为空\n”; $dir2=$dir; opendir my$dh2$dir2; while(已定义($name2=readdir$dh2)){ 下一个除非-d“$dir2/$name2”; $dd=$dir2.$name2.“/”; #打印“$dd\n”; 如果(文件夹为空($dd)){ 打印“$dd为空\n”; 打印“是否要删除它?1-是2-否\n”; $aa=; 咀嚼$aa; 如果($aa==1){ $deleteregdir=“$dir”; rmdir$deleteregdir; 打印“目录已被删除!!\n”; } } 其他的 { 打印“$dd不为空\n”; } } } }
此代码仅针对目录及其子目录运行。迭代在下一级停止。我想搜索所有空目录。我希望结构是这样的:当我运行代码时,所有空目录都会在得到用户确认后被删除。需要在windows中使用perl删除所有空子目录 while(已定义($name=readdir$dh)){ 下一个除非-d“$root/$name”; $dir=$root.$name.“/”; 如果(文件夹为空($dir)){ 打印“$dir为空\n”; 打印“是否要删除它?1-是2-否\n”; $aa=; 咀嚼$aa; 如果($aa==1){ $deleteregdir=“$dir”; rmdir$deleteregdir; 打印“目录已被删除!!\n”; } } 其他的 { 打印“$dir不为空\n”; $dir2=$dir; opendir my$dh2$dir2; while(已定义($name2=readdir$dh2)){ 下一个除非-d“$dir2/$name2”; $dd=$dir2.$name2.“/”; #打印“$dd\n”; 如果(文件夹为空($dd)){ 打印“$dd为空\n”; 打印“是否要删除它?1-是2-否\n”; $aa=; 咀嚼$aa; 如果($aa==1){ $deleteregdir=“$dir”; rmdir$deleteregdir; 打印“目录已被删除!!\n”; } } 其他的 { 打印“$dd不为空\n”; } } } },windows,perl,directory-structure,file-handling,Windows,Perl,Directory Structure,File Handling,此代码仅针对目录及其子目录运行。迭代在下一级停止。我想搜索所有空目录。我希望结构是这样的:当我运行代码时,所有空目录都会在得到用户确认后被删除。 提前感谢。如果您愿意使用模块,这将使这类事情变得非常简单 while (defined($name = readdir $dh)) { next unless -d "$root/$name"; $dir=$root.$name."/"; if(is_folder_empty($dir)){ print"$dir
提前感谢。如果您愿意使用模块,这将使这类事情变得非常简单
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
?
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;
perl -MFile::Find -e"finddepth(sub{rmdir},'.')"