bash - 在 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 的长命令之外,还有什么方法可以加快此过程或使用更简单的方法完成此任务?
任何想法/帮助表示赞赏。
解决方案
推荐阅读
- firebase - 如何按'_createTime'对firestore文档进行排序?
- laravel - 无法在 laravel 中使用 vue.js 更新数据
- sql - 如何删除具有 2 列作为复合主键的多行
- r - 使用 R 中的单元格值将列名定义为参数
- c++ - Compare std::variant with int using C++20 <=> is not a constant expression
- laravel - 关于 laravel 中的验证文件的验证错误
- azure - Azure devops 构建管道 - 发布工件过程
- toit - 如何在 Toit 中生成随机数?
- angular - 我可以像这样链接可观察对象吗?我实现了一些东西,但不确定这是最好的方法吗?
- data-structures - 需要多少探针才能避免散列冲突?