在给定目录中删除子目录和文件

4

我想要删除一个目录下的所有子目录和文件,但是不删除这个目录本身。比如说,如果我把“Sample”目录传入一个变量中,而且“Sample”目录包含三个子目录和三个文件,我想要删除这三个目录和三个文件。实际上,“Sample”目录可能包含很多子目录和文件。


使用带有find命令的shell更简单,就像一行代码。 - Jasonw
3
Perl 不仅仅只能在 UNIX 系统上运行… - Alnitak
1个回答

9

预计完成时间:实际上这在perlfaq5中有解答:如何删除目录树?

使用核心模块File::Path

perl -MFile::Path=remove_tree -we 
    'remove_tree("Sample",{keep_root=>1}) or die $!'
keep_root选项将导致remove_tree保留顶级目录:

keep_root => $bool

将其设置为true,将删除所有文件和子目录,除了最初指定的目录。当清理应用程序的临时目录时很有用。


+1 rmdir函数仅删除不包含任何文件的子目录,如果要删除包含文件的子目录,则需要使用File::Path模块。 - user966588
非常感谢大家宝贵的评论。 @TLP 爱你! 我稍微修改了一下代码,但仍然可以正常工作。使用File::Path qw{remove_tree}; remove_tree("C:/FFFF2",{keep_root=>1}) or die $! - Shaggy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接