Procurando por um shell one-liner para exibir a idade de um arquivo (em dias)

1

Eu gostaria de ver a idade de um arquivo (tempo desde a última modificação) em algumas unidades humanas (pontos de bônus para coisas como "ontem", "2 dias atrás", "3 anos atrás", embora apenas um número de dias seria suficiente).

Existe uma shell one-liner que é simples o suficiente para memorizar e digitar sob demanda? Existe uma ferramenta (empacotada para Debian / Ubuntu)? Eu escrevo um script de shell personalizado para fazer alguma aritmética e instalá-lo em todos os servidores que tenho?

    
por Marius Gedminas 30.07.2010 / 15:15

2 respostas

7

Isso exibirá a idade de um arquivo em dias:

age () { stat=$(stat --printf="%Y %F\n" "$1"); echo "The ${stat#* } '$1' is $((($(date +%s) - ${stat%% *})/86400)) days old."; }

Exemplos:

$ age foo
The regular file 'foo' is 41 days old.
$ age ../bar
The directory '../bar' is 296 days old.
$ age /path/to/baz
The symbolic link '/path/to/baz' is 207 days old.

Mais refinamento poderia ser feito para mostrar a idade em meses, anos, etc.

    
por 30.07.2010 / 15:58
0

Perto o suficiente para produzir uma boa data legível para humanos! Existe uma opção para ls --time-style . Isso permite que você formate a data que será exibida.

Exemplo

 ls -l --time-style="+%b %_d %Y"

 -rw-r--r--  1 root root 11359620 Jul 20 2010 file.ext

Para evitar a digitação deste comando suspenso, você pode aliasá-lo em seu arquivo .bashrc.

    
por 30.07.2010 / 15:29