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

Sha*_*ggy 4 directory perl file unlink

我想删除目录中的所有子目录和文件,但不删除目录本身.例如,如果我在变量中传递"Sample"目录,并且"Sample"目录包含三个子目录和3个文件,我想删除所有3个目录和3个文件.实际上,"Sample"目录可以包含许多子目录和文件.

TLP*_*TLP 9

ETA:这实际上是在perlfaq5中:如何删除目录树?

使用File::Path,核心模块.

perl -MFile::Path=remove_tree -we 
    'remove_tree("Sample",{keep_root=>1}) or die $!'
Run Code Online (Sandbox Code Playgroud)

keep_root选项将导致remove_tree保留顶级目录:

keep_root => $ bool

设置为true值时,将删除除最初指定的目录之外的所有文件和子目录.清理应用程序的临时目录时,这很方便.