Obtenha o tamanho de todos os arquivos no diretório modificado no ano passado

3

Estou tentando avaliar o uso de armazenamento em um servidor linux.

A maior parte do armazenamento está vindo das imagens. Eu gostaria de ver se consigo ter uma noção do tamanho dos arquivos modificados no ano passado. e talvez também nos últimos 5 anos, para ver como isso se compara ao tamanho total do diretório de imagens (que é 40GB)

Eu tentei du -h e isso é útil, mas não consigo ver como filtrar esses resultados por data de modificação.

    
por Damon 09.05.2016 / 04:30

2 respostas

3

Se o pacote num-utils estiver instalado, numsum fornece uma maneira fácil de adicionar muitos números; while numfmt simplifica a saída:

find . -type f -mtime -365 -printf '%s\n' | numsum | numfmt --to=iec

( find código emprestado de Ziggy Crueltyfree Zeitgeister .)

Nos últimos 5 anos, faça:

find . -type f -mtime -$((365 * 5)) -printf '%s\n' | numsum | numfmt --to=iec

Se uma contagem precisa de dias for necessária, date fornecerá isso. Aqui está uma função do shell que retorna o número de dias exato nos últimos n anos:

# covert Last _n_ Years to Days
# usage:  ly2d n
ly2d() \
    { echo $(( \
               $(( 'date -d today +%s' - \
                   'date -d $1" years ago" +%s' )) \
           / 60 / 60 / 24 )) ; \
    }

Usando ly2d nos últimos 5 anos:

find . -type f -mtime -$(ly2d 5) -printf '%s\n' | numsum | numfmt --to=iec
    
por 09.05.2016 / 16:00
2

Você pode usar o perl para somar a saída do find:

find . -type f -mtime -365 -printf '%s\n' |\
  perl -e 'my $s=0; while(<>) { $s += $_; } print "$s\n"'
    
por 09.05.2016 / 09:07