【问题标题】:Deleting subdirectories and files in a given directory删除给定目录中的子目录和文件
【发布时间】:2012-04-02 19:07:46
【问题描述】:

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

【问题讨论】:

  • 通过命令find 使用shell。这要简单得多,就像一个班轮..
  • @Jasonw Perl 不在 UNIX 系统上运行...

标签: perl file directory unlink


【解决方案1】:

ETA:这实际上是在 perlfaq5:How do I delete a directory tree?

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

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

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

keep_root => $bool

当设置为真值时,将导致所有文件和子目录 被删除,除了最初指定的目录。这进来了 清理应用程序的暂存目录时很方便。

【讨论】:

  • +1 rmdir 函数只删除其中不包含任何文件的子目录,删除包含文件的子目录需要File::Path模块
  • 非常感谢你们宝贵的 cmets。 @TLP 爱你!!!我稍微修改了代码,但使用 File::Path qw{remove_tree}; 仍然可以正常工作remove_tree("C:/FFFF2",{keep_root=>1}) 或死 $!
猜你喜欢
  • 2017-10-08
  • 2023-01-04
  • 2016-08-17
  • 2013-01-07
  • 1970-01-01
  • 2014-09-03
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
相关资源
最近更新 更多