如何按顶级目录汇总文件大小

如何按顶级目录汇总文件大小

比如说,我有一个这样的目录结构:

.
├── a
│   ├── d
│   │   ├── file1
│   │   └── file2
│   └── e
│       ├── file1
│       └── file2
└── b
    ├── d
    │   ├── file1
    │   └── file2
    └── e
        ├── file1
        └── file2

我想计算在特定日期之后按顶级目录修改的文件的总字节数。所以我这样做了:

find . -type f|sed -e "s/'//g" |xargs -L1 -IA stat -c "%Y,%s,%n" A|cut -d/ -f1,2

输出如下:

1479334332,20815368,./a
1479334362,58827575,./a
... ...
1479334383,41663496,./b
1479334413,58925879,./b
... ...

第一列是文件修改时间戳,第二列是文件大小,最后一列是顶级目录。现在我想做类似于此sql的聚合:

SELECT SUM(file_size) WHERE modified_timestamp>... GROUP BY directory

我想仅在 bash 中执行此操作,以避免为其编写程序。

答案1

我发现了很多工具可以完成这样的事情:

我已经测试了前两个,都可以,唯一值得一提的是他们对 CSV 的支持没有标头。我个人是q出于这个原因建议的,但坦率地说,它们大多是相同的。

相关内容