使用状态获取最近修改的目录
问题描述:
这证明是非常困难的。我想使用stat
来获取最近修改的目录的名称。我对stat
进行了相当多的研究,但我真的不知道如何使用它,所以我没有任何代码可以显示。使用状态获取最近修改的目录
如何在C中使用stat
获取最近修改的目录?
答
我假设你熟悉从给定目录列出所有文件(并提取出目录)[如果没有在opendir/readdir上读取]。算法将不准确,因为目录可能在其时间后被触摸印方检查,但假设这是不是一个问题,这里的东西,你可能会做
DIR *dirp = opendir(".");
struct stat dStat;
time_t latest = 0;
while ((dp = readdir(dirp)) != NULL) {
memset(&dStat, 0, sizeof(dStat));
if (stat(dp->d_name, &dStat) < 0) {
printf("Error getting info on file\n");
continue;
}
// If not a directory skip
if ((dStat.st_mode & S_IFDIR) != S_IFDIR) {
continue;
}
// check with the latest timestamp
if (dStat.st_mtime > latest) {
// On finding a more recent file switch that to latest
strcpy(dName, dp->d_name);
latest = fStat.st_mtime;
}
}
closedir(dirp);
printf("Most recently touched directory %s\n", dName);
如何使用统计:http://unix.stackexchange.com/questions/240418/find-latest-files 在为了在c中使用execl执行这个命令。 – Michael
你的目录列表是如何构建的?每个目录的检查时间都会有问题;如果您有一千个目录,则可能会为第一个目录找到修改时间t1,并且您可能会在第n个目录中找到一个修改时间tN,t1