资讯动态

如何用 coreutils du 的 --time birth 扩展查看文件创建时间?

发布时间:2026/9/13 10:41:50 来源:尧图企业网站定制
如何用 coreutils du 的 --time birth 扩展查看文件创建时间【免费下载链接】coreutilsCross-platform Rust rewrite of the GNU coreutils项目地址: https://gitcode.com/GitHub_Trending/co/coreutilsGNU 版的du --time只支持atime/ctime等取值想在目录大小的汇总输出里同时看到文件的创建时间birth time做不到。uutils coreutils本项目的 Rust 重写版对du增加了扩展--time参数接受birth和creation两个取值用于显示创建时间这一点在 扩展文档 中明确说明。本文围绕这一条命令展开如何运行它、输出长什么样、时间格式怎么调以及在哪些平台上会失败。准备安装 uutils coreutils前提是拿到 uutils 版本的核心工具而不是发行版自带的 GNU 版本。按 安装文档用 Cargo 安装# Unix like cargo install coreutils --features unix --locked # Windows cargo install coreutils --features windows --locked如果不想自行构建Alpine、Arch、Debian、Fedora 等发行版也有打包好的uutils-coreutils/rust-coreutils包具体命令以 docs/src/installation.md 为准。安装后du指向 uutils 版本时--timebirth才可用。执行用 --timebirth 显示创建时间基本用法是给--time直接带上取值du --timebirth 目录或文件路径creation是等价的别名du --timecreation效果相同。注意该参数要求取值紧跟等号实现上设置了require_equals见 du.rs 中的参数定义--time birth这种空格写法不被接受取值也支持atime别名access、use和ctime别名status本场景只关心birth/creation。输出为三列、以 Tab 分隔换算后的大小、时间戳、路径。时间列按本地时区格式化项目测试中通过设置TZUTC来固定输出默认风格为long-iso形如YYYY-MM-DD HH:MM。以 测试文件 中的--time用例为例文档示例时间值取决于实际文件的创建时间0 2016-06-16 00:00 date_test测试里对--timebirth的断言就是检查时间列匹配正则[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}即YYYY-MM-DD HH:MM这个形状而不是某个固定时间值。调整时间显示格式--time-style控制时间列的格式取值与date风格类似见 du 错误信息定义 中列出的合法参数du --timebirth --time-stylefull-iso ./mydir # 完整 ISO含秒与偏移 du --timebirth --time-styleiso ./mydir # 仅 YYYY-MM-DD du --timebirth --time-style%Y-%m-%d ./mydir # date 风格自定义full-iso对应的文档示例输出来自测试仅作格式参考0 2016-06-16 00:00:00.000000000 0000 date_test未显式指定--time-style时程序会回落到环境变量TIME_STYLE前缀posix-会被剥离再否则使用默认的long-iso见 du.rs 中 parse_time_style。验证与失败判断正常成功的判断依据是命令退出码为 0且每行输出的第二列是时间字符串。两种异常情形在源码和文案里都有明确定义平台不支持如果运行平台不提供创建时间命令直接报错错误文案见 en-US.ftldu: birth and creation arguments for --time are not supported on this platform.创建时间的底层获取依赖 Rust 标准库的Metadata::created()见 fsext.rs 中MetadataTimeField::Birth md.created().ok()所以是否可用取决于平台和文件系统是否报告 birth time。个别条目取不到时间时间列会打印???占位而不是整条命令失败见 du.rs 中 print_stat。项目测试中 Windows 平台对不支持的字段如 ctime就是断言0 ??? date_test这一形状文档示例。如果你想在脚本里自动校验时间列格式可复用测试的做法对--timebirth的输出按行匹配^[0-9]\t[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}\t默认long-iso风格下。限制说明du --time对目录显示的是目录内所有文件中“最新”的那个对应时间源码中各条目的时间取max累并到父目录所以目录行的创建时间列实际反映的是其内容里最晚的创建时间这与 帮助文案 中 “time of the last modification of any file in the directory, or any of its subdirectories” 的描述方式一致。--time只接受atime、ctime、creation/birth这几组取值写错取值或给出空的--time含TIME_STYLE为空字符串的情况都会报错例如du: invalid argument for time style见 test_du_time_style_empty。该功能是 uutils 相对 GNU 的扩展GNUdu不支持--timebirth在依赖 GNU 行为的脚本中引入它需要留意兼容性。du的这条扩展就是为“列目录大小时顺便看到创建时间”这一场景设计的命令形态、格式参数与失败表现如上更多 GNU 扩展差异可继续查 docs/src/extensions.md。【免费下载链接】coreutilsCross-platform Rust rewrite of the GNU coreutils项目地址: https://gitcode.com/GitHub_Trending/co/coreutils创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价