首页 > 解决方案 > 在 Bash 中按大小和修改时间列出目录

问题描述

我正在尝试编写 bash 脚本,该脚本将进入给定的目录结构,按大小(以 GB 或 MB 为单位,顶部最大)和修改日期(顶部最旧,底部最新)列出所有子目录。我目前正在使用 du 命令,但考虑到我正在尝试执行的操作,它非常慢。以下是代码。

du -h --time --max-depth=1 */TEST_ENV 2>/dev/null |
  awk '{print $2,$1,$4}' | sort -M | head -n 100 | awk '{print $2,$4} | sort -rh'

上面的示例输出如下

   2020-11-25 2.3G ./ALPHA
   2020-11-30 2.8G ./BETA
   2020-12-01 3.4G ./GAMMA
   ...

请注意,有 1000 个子目录被返回,我只想显示前 100 个子目录,因为它的大小(顶部最大)和修改日期(最旧在顶部,最新在底部)。

除了上面显示的使用 du 的长命令之外,还有什么方法可以加快此过程或使用更简单的方法完成此任务?

任何想法/帮助表示赞赏。

标签: bashdu

解决方案


推荐阅读