【问题标题】:Determine the oldest file in a directory确定目录中最旧的文件
【发布时间】:2012-06-12 13:32:14
【问题描述】:

我目前正在处理一个项目,我需要从目录中的基本名称中找到最旧的文件。

例如,文件的基本名称可能是 mylog,但它需要查看所有文件,例如 mylog_060620121421.txt。从 mylog_ 的所有文件中,我需要找出最旧的文件,即首先创建的文件,但我找不到如何执行此操作。

我已经看到 scandir 命令列出文件名,但我不知道如何使用它来查找文件的最早日期。

【问题讨论】:

  • 您需要以编程方式进行吗?
  • 它将在 c 程序中以编程方式完成。我还没有尝试任何特定于最旧文件的东西,只有使用 scandir 读取所有文件并检查文件是否包含日志文件并打印它的名称的部分,到目前为止就是这样,但我不能找出最旧文件的主要部分。
  • 看看从文件名中获取相关部分的子字符串(看起来像从 6 到 14)并从那里开始工作:) 这是作业吗?
  • 我已经说过我已经让那个位工作了,我遇到的问题是找到找到的文件中哪个是最旧的。
  • 你的工作平台是什么? Windows 还是 Linux?如果是 Linux,我们无法获取文件 IIRC 的创建时间。

标签: c directory


【解决方案1】:

在 linux 上只需输入目录:

ls -trl

这给出了一个列表,从最旧的文件开始。如果你想要直接的名字,你可以得到它:

ls -tr | head - 1

【讨论】:

  • 谢谢,效果很好,只是想知道有没有办法在 Windows 上也能做到这一点,我主要是为 linux 做的,但理想情况下它应该支持两者。我在想我正在使用的方法可以检查它是 windows 还是 linux 并运行正确的方法来完成此任务。
  • 问题用 C 标记。似乎应该删除,或者应该接受其他 C 答案。
【解决方案2】:

使用 stat()
运行命令“man -S 2 stat”以了解更多信息。

#include 
结构统计结构统计;
stat(文件名,&structstat)
printf("最后修改时间:%s", ctime(&structstat.st_mtime));

其中文件名是一个字符串/字符 * 代表文件 structstat 是 stat 的结构体,可以在 sys/stat.h 中找到

最旧的文件将是具有最旧修改时间的文件, structstat.st_mtime 除非您同时拥有这两个文件,然后您可以使用 structstat.st_ctime(状态更改)作为类型断路器...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-19
    • 2010-10-24
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2012-04-23
    • 2020-01-27
    • 2012-10-06
    相关资源
    最近更新 更多