如何按时间对 du 结果进行排序 * 并* 限制为 --max-深度 = 1

如何按时间对 du 结果进行排序 * 并* 限制为 --max-深度 = 1

我使用 rsync 来备份文件,--link-dest仅同步与上次备份文件夹的差异。

无论如何我可以看到按日期排序的目录列表将其限制为--max-depth=1-d 1?

例如,这显示了一个目录的深度:

$ du -h --max-depth=1
33G     ./05-12-2021-16:00
4.7G    ./05-12-2021-12:30
4.6G    ./05-12-2021-11:30
11G     ./06-12-2021-13:30
4.8G    ./06-12-2021-02:00
19M     ./06-12-2021-08:58
4.7G    ./05-12-2021-21:00
938M    ./05-12-2021-02:11
754M    ./05-12-2021-19:00
32M     ./06-12-2021-02:30
179M    ./05-12-2021-13:30
172M    ./05-12-2021-17:30
4.7G    ./05-12-2021-22:00
752M    ./05-12-2021-20:00
170M    ./05-12-2021-17:00
4.7G    ./06-12-2021-12:01
934M    ./05-12-2021-12:00
38M     ./05-12-2021-14:00
175M    ./06-12-2021-12:31
34M     ./05-12-2021-18:00
388M    ./05-12-2021-16:30
42M     ./06-12-2021-14:01
4.7G    ./05-12-2021-00:54
756M    ./06-12-2021-11:33
173M    ./06-12-2021-00:31
4.5G    ./06-12-2021-15:31
31M     ./06-12-2021-00:00
1007M   ./05-12-2021-23:01
762M    ./05-12-2021-22:30
31M     ./05-12-2021-21:30
765M    ./06-12-2021-15:01
214M    ./05-12-2021-10:44
32M     ./06-12-2021-01:30
33M     ./06-12-2021-13:00
27M     ./05-12-2021-15:00
166M    ./05-12-2021-11:00
32M     ./06-12-2021-01:01
176M    ./05-12-2021-02:30
27M     ./05-12-2021-15:30
30M     ./05-12-2021-18:30
37M     ./05-12-2021-13:00
31M     ./05-12-2021-20:30
753M    ./05-12-2021-23:30
752M    ./05-12-2021-19:30
43M     ./06-12-2021-14:30
38M     ./05-12-2021-14:30
91G     .

使用答案这里,它按大小排序,但完全递归到每个目录:

$ command ls -dt */ | while IFS= read -r dir; do du -sh "$dir"; done
33G     05-12-2021-00:54/
33G     05-12-2021-02:11/
33G     05-12-2021-02:30/
33G     05-12-2021-10:44/
33G     05-12-2021-11:00/
33G     05-12-2021-11:30/
33G     05-12-2021-12:00/
33G     05-12-2021-12:30/
33G     05-12-2021-13:00/
33G     05-12-2021-13:30/
33G     05-12-2021-14:00/
33G     05-12-2021-14:30/
33G     05-12-2021-15:00/
33G     05-12-2021-15:30/
33G     05-12-2021-16:00/
33G     05-12-2021-16:30/
33G     05-12-2021-17:00/
33G     05-12-2021-17:30/
33G     05-12-2021-18:00/
33G     05-12-2021-18:30/
33G     05-12-2021-19:00/
33G     05-12-2021-19:30/
33G     05-12-2021-20:00/
33G     05-12-2021-20:30/
33G     05-12-2021-21:00/
33G     05-12-2021-21:30/
33G     05-12-2021-22:00/
33G     05-12-2021-22:30/
33G     05-12-2021-23:01/
33G     05-12-2021-23:30/
33G     06-12-2021-00:00/
33G     06-12-2021-00:31/
33G     06-12-2021-01:01/
33G     06-12-2021-01:30/
33G     06-12-2021-02:00/
33G     06-12-2021-02:30/
23G     06-12-2021-08:58/
33G     06-12-2021-11:33/
33G     06-12-2021-12:01/
33G     06-12-2021-12:31/
33G     06-12-2021-13:00/
33G     06-12-2021-13:30/
33G     06-12-2021-14:01/
33G     06-12-2021-14:30/
33G     06-12-2021-15:01/
33G     06-12-2021-15:31/
33G     06-12-2021-16:03/

我需要的是答案问题,但按时间/日期排序。

我已经查看了这里的答案,但我看不到任何有用的内容:
https://superuser.com/questions/147027/how-can-i-sort-the-output-of-ls-by-last-modified-date
是否有任何 du(磁盘使用情况)命令标志来总结每个子目录的大小
https://stackoverflow.com/questions/37272935/unix-command-size-of-directory-with-order-by-size
如何递归查找目录中存储的数量?

答案1

一种方法,如果您du支持--time标志:

du --max-depth=1 --time | sort -k 2

第二个示例的解决方案(不显示递归大小)是将-S标志添加到du

ls -dt */ | while IFS= read -r dir; do du -Ssh "$dir"; done

但这个命令过于复杂。你可以让它变得更容易:

du -Ssh "$(ls -Qdt /*)"

答案2

du您可以通过管道输入into的输出sort -k 2,以根据第二列对结果进行排序:

du -h --max-depth=1 | sort -k 2

相关内容