0

递归或迭代地删除子文件夹中的某些文件类型会更好吗?

递归示例:

  • r =(如果子文件夹打开子文件夹,则删除 1 周之前的 .bak 文件,如果没有子文件夹并且如果没有 1 周之前的 .bak 文件,则打印未找到 1 周之前的 .bak 文件)
  • 文件夹 1(运行 r)> 子文件夹 1(运行 r)> 子文件夹 2(运行 r)> 子文件夹 n(运行 r)> 程序在退出每个文件时删除 1 周前的 .bak 文件文件夹。

迭代示例:

  • del = 删除超过 1 周的 .bak 文件
  • search = 搜索子文件夹,如果找到子文件夹,则将它们放入数组中。
  • 打开 = 一次打开每个子文件夹,在每个子文件夹中运行 del 然后再次搜索并重复,直到程序到达该分支内的最后一个子文件夹。
  • 从根目录移动到下一个子文件夹分支。
  • 错误 = 如果没有子文件夹并且如果没有超过 1 周的 .bak 文件,则打印没有超过 1 周的 .bak 文件
  • 文件夹 1 > del or error > search > open > move > print: # .bak files deleted in # seconds...
4

1 回答 1

0

在迭代的情况下,您需要手动维护堆栈或队列(在 DFS 或 BFS 的情况下)。如果您不仅要删除文件而且还要删除目录,那么 DFS 将是最好的(因为您只能删除空目录)。我认为最好使用系统堆栈进行深度优先搜索,并在每个目录中执行您想要的操作。堆栈不应该增长太多导致堆栈溢出,除非您的目录条目和目录深度非常长,这不太可能发生。

您也可以使用设置堆栈大小ulimit

于 2013-07-29T05:32:56.273 回答