Добавляет немного цвета (поскольку pretty-format
недоступно)
[alias]
branchdate = for-each-ref --sort=-committerdate refs/heads/ --format="%(authordate:short)%09%(objectname:short)%09%1B[0;33m%(refname:short)%1B[m%09"
Типичное решение
Если вы хотите, чтобы размер каталога был аналогичен du, создайте рекурсивную функцию. Можно решить проблему итеративно, но решение поддается рекурсии.
Информация
Вот ссылка для начала:
http://www.cs.utk.edu/~plank /plank/classes/cs360/360/notes/Prsize/lecture.html
Search
Искать в Google с помощью 'stat c program рекурсивного размера каталога'
Пример
Непосредственно с веб-сайта Джима Планка, служащего пример для начала работы.
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
main()
{
DIR *d;
struct dirent *de;
struct stat buf;
int exists;
int total_size;
d = opendir(".");
if (d == NULL) {
perror("prsize");
exit(1);
}
total_size = 0;
for (de = readdir(d); de != NULL; de = readdir(d)) {
exists = stat(de->d_name, &buf);
if (exists < 0) {
fprintf(stderr, "Couldn't stat %s\n", de->d_name);
} else {
total_size += buf.st_size;
}
}
closedir(d);
printf("%d\n", total_size);
}
Вам необходимо stat () все файлы в текущем каталоге и подкаталогах и сложить их.
Рассмотрите возможность использования для этого рекурсивного алгоритма.