查找过去 24 小时修改过的文件
通过 Zig 的标准库 std.fs
,我们可以轻松地遍历目录并检查文件的元数据。以下示例展示了如何查找在过去24小时内修改过的文件。
对于每个文件,我们使用 statFile()
函数获取其元数据,并检查 mtime
(修改时间)字段是否在过去24小时内。
//! Find files that have been modified in the last 24 hours
const std = @import("std");
const builtin = @import("builtin");
const fs = std.fs;
const print = std.debug.print;
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
const allocator = gpa.allocator();
var iter_dir = try fs.cwd().openDir("src", .{ .iterate = true });
defer iter_dir.close();
var walker = try iter_dir.walk(allocator);
defer walker.deinit();
const now = std.time.nanoTimestamp();
while (try walker.next()) |entry| {
if (entry.kind != .file) {
continue;
}
const stat = try iter_dir.statFile(entry.path);
const last_modified = stat.mtime;
const duration = now - 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,
});
}
}
}