查找过去 24 小时修改过的文件
通过 Zig 的标准库 std.Io.Dir,我们可以轻松地遍历目录并检查文件的元数据。以下示例展示了如何查找在过去24小时内修改过的文件。
对于每个文件,我们使用 statFile() 函数获取其元数据,并检查 mtime(修改时间)字段是否在过去24小时内。
//! Find files that have been modified in the last 24 hours
const std = @import("std");
const print = std.debug.print;
pub fn main(init: std.process.Init) !void {
const gpa = init.gpa;
const io = init.io;
var iter_dir = try std.Io.Dir.cwd().openDir(io, "src", .{ .iterate = true });
defer iter_dir.close(io);
var walker = try iter_dir.walk(gpa);
defer walker.deinit();
const now_ns = std.Io.Clock.real.now(io).nanoseconds;
while (try walker.next(io)) |entry| {
if (entry.kind != .file) {
continue;
}
const stat = try iter_dir.statFile(io, entry.path, .{});
const last_modified = stat.mtime.nanoseconds;
const duration = now_ns - last_modified;
if (duration < std.time.ns_per_hour * 24) {
print("Last modified: {d} seconds ago, size:{d} bytes, filename: {s}\n", .{
@divTrunc(duration, std.time.ns_per_s),
stat.size,
entry.path,
});
}
}
}