控制 du 排序

Controlling du ordering

简短版本;我如何控制 du 扫描目录的顺序?

注意: 之后的排序是不够的,我需要更改 du 扫描的顺序,而不是结果的顺序。

一些背景知识;我有一个简单的基于 rsync 的备份,在一个目录中有一堆快照,所有快照都由它们创建的 date/time 命名。

所以示例可能如下所示:

2019-08
2019-09
2019-09-20
2019-09-21
2019-09-23-161447
2019-09-23-172658

i.e- 我有小时报(在最后),折叠成日报(中间),然后最终进入月报(顶部),这很好用,因为它们与 ls 的自然排序很好地配合.

然而,问题是当我 运行 du . 时,顺序是不可预测的,或者至少,它不一样(从旧到新)所以结果没有用,因为我喜欢;有时我会在月刊之前得到每天甚至每小时的扫描,而且顺序有时只与我想要的相匹配。

理想情况下,我想要的是 du 始终从最旧到最新评估快照,因为这样 du 将为所有后来的快照提供大小作为大小 difference/delta(因为未更改的文件是硬链接的,它只计算以后快照的更改)。

是否可以强制对 du 扫描目录的顺序进行自然排序?

出于某种原因,我没有想到如果我只是将所有快照作为参数传递,那么 du 仍会忽略其他硬链接,因此在我的情况下可能的答案是类似于:

du -sh /path/to/snapshots/*-*

由于我的父目录不包含其他带有连字符的条目,这将扩展到其中的每个快照,并且似乎以自然排序顺序给出。根据您自己的用例的相似程度,您可能需要调整模式,或以其他方式获取列表。

不过,在我将此答案标记为正确之前,我可以请某人确认一下吗?这是订购快照的可靠方式吗?它似乎给了我一个自然的排序顺序,但我无法找到来源来确认是否总是如此。如果它不可靠,或者即使它可靠,是否有任何 other/more 灵活的替代方案?