【问题标题】:Recursion or iteration for deleting certain files types within sub folders用于删除子文件夹中某些文件类型的递归或迭代
【发布时间】:2013-07-28 19:18:49
【问题描述】:

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

递归示例:

  • 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...

【问题讨论】:

  • 你能格式化和缩进你的伪代码吗?

标签: c search recursion iteration delete-file


【解决方案1】:

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

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

【讨论】:

  • 我也喜欢 DFS 的声音,但我不想删除仅发现 1 周以上的 .bak 文件的目录。引用系统堆栈的命令是什么?
  • “参考”是什么意思?
  • 我想我的意思是你能给我一些面包屑,这样我就可以开始编写代码了。我需要一个可以参考的参考资料,以了解堆栈是如何在“C 编程”中编码的
  • 如果您使用递归,则不必担心内部堆栈。如果您的递归足够深并且每个实例足够大以填充当前允许的值,则您需要调整堆栈的大小。要对其进行调整,请检查 ulimit 命令。要手动编码堆栈,只需谷歌堆栈,你会得到它们无处不在。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 2015-05-18
  • 2018-11-09
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多