LINUX.ORG.RU

История изменений

Исправление Zmicier, (текущая версия) :

find . -name '*' -printf '%Ad-%Ab %s\n' | awk 'NR==1 {print "DATE\tQUANTITY\tSIZE"}{a[$1]+=$2;b[$1]+=1;}END{for(i in a)print i"\t"b[i]"\t"a[i]/1024}'

Это же подход в целом совершенно верный, однако во-первых, я что-то сомневаюсь, что вам нужно группировать файлы именно по дате последнего доступа. По дате создания их группировать вовсе невозможно, поскольку она, скорее всего, у вас нигде не хранится, но можно по дате изменения.

Ну и переписать это все почище не помешало бы:

#!/bin/bash

cd "$1" || exit 1

find -printf '%TY-%Tm-%Td %s\n' |\
    gawk 'BEGIN {
              OFS="\t";
              print "DATE", "COUNT", "SIZE";
          };

          {
              count[$1]++;
              size[$1] += $2;
          };

          END {
              for (i in count)
                  print i, count[i], size[i];
          };'

Что у вас тут не работало, я не знаю; возможно, у вас там более чем за год файлы были.

Исправление Zmicier, :

find . -name '*' -printf '%Ad-%Ab %s\n' | awk 'NR==1 {print "DATE\tQUANTITY\tSIZE"}{a[$1]+=$2;b[$1]+=1;}END{for(i in a)print i"\t"b[i]"\t"a[i]/1024}'

Это же подход в целом совершенно верный, однако во-первых, я что-то сомневаюсь, что вам нужно группировать файлы именно по дате последнего доступа. По дате создания их группировать вовсе невозможно, поскольку она, скорее всего, у вас нигде не хранится, но можно по дате изменения.

Ну и переписать это все почище не помешало бы:

cd "$1" || exit 1

find -printf '%TY-%Tm-%Td %s\n' |\
    gawk 'BEGIN {
              OFS="\t";
              print "DATE", "COUNT", "SIZE";
          };

          {
              count[$1]++;
              size[$1] += $2;
          };

          END {
              for (i in count)
                  print i, count[i], size[i];
          };'

Что у вас тут не работало, я не знаю; возможно, у вас там более чем за год файлы были.

Исправление Zmicier, :

find . -name '*' -printf '%Ad-%Ab %s\n' | awk 'NR==1 {print "DATE\tQUANTITY\tSIZE"}{a[$1]+=$2;b[$1]+=1;}END{for(i in a)print i"\t"b[i]"\t"a[i]/1024}'

Это же подход в целом совершенно верный, однако во-первых, я что-то сомневаюсь, что вам нужно группировать файлы именно по дате последнего доступа. По дате создания их группировать вовсе невозможно, поскольку она, скорее всего, у вас нигде не хранится, но можно по дате изменения.

Ну и переписать это все почище не помешало бы:

#!/bin/bash

find -printf '%TY-%Tm-%Td %s\n' |\
    gawk 'BEGIN {
              OFS="\t";
              print "DATE", "COUNT", "SIZE";
          };

          {
              count[$1]++;
              size[$1] += $2
          };

          END {
              for (i in count)
                  print i, count[i], size[i];
          };'

Что у вас тут не работало, я не знаю; возможно, у вас там более чем за год файлы были.

Исходная версия Zmicier, :

find . -name '*' -printf '%Ad-%Ab %s\n' | awk 'NR==1 {print "DATE\tQUANTITY\tSIZE"}{a[$1]+=$2;b[$1]+=1;}END{for(i in a)print i"\t"b[i]"\t"a[i]/1024}'

Это же подход в целом совершенно верный, однако во-первых, я что-то сомневаюсь, что вам нужно группировать файлы именно по дате последнего доступа. По дате создания их группировать вовсе невозможно, поскольку она, скорее всего, у вас нигде не хранится, но можно по дате изменения.

Ну и переписать это все почище не помешало бы:

#!/bin/bash

find -printf '%TY-%Tm-%Td %s\n' |\
    gawk 'BEGIN {
              OFS="\t";
              print "DATE", "COUNT", "SIZE";
          };

          {
              count[$1]++;
              size[$1] += $2
          };

          END {
              for (i in count)
                  print i, count[i], size[i];
          };'

Что у вас тут не работало, я не знаю; возможно, у вас там более чем за год файлы было.