tamanho da lista de pastas e sua data alterada

1

Como posso listar o tamanho das pastas, bem como a data de alteração delas?

Eu posso obter o tamanho das pastas usando du . Eu também posso listar as pastas junto com a data usando

$ls  -ltr $path |  grep '^d'

Mas não consigo exibir o tamanho e a data juntos.

ls -h ou stat não funcionam para mim.

    
por user148335 22.12.2015 / 13:24

2 respostas

2

Em um sistema GNU, man du revela o argumento --time :

du -h --time .

que para diretórios mostra a hora da última modificação de qualquer arquivo no diretório, ou qualquer um de seus subdiretórios.

    
por 22.12.2015 / 13:42
1

Não analise ls , é ruim juju. Meu primeiro começo seria - use perl :

#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;

for ( grep { -d } glob ( "*") ) {
    print join ( "\t", $_, -s, (stat)[9] ),"\n";
}

Mas isso, é claro, apenas toma o lado inode do diretório, o que provavelmente não é o que você quer. Então, ao invés disso ... na verdade, o mais fácil pode ser chamar o du de qualquer maneira.

for my $dir ( grep { -d } glob ( "*") ) {
    print join ( "\t", (stat $dir)[9], 'du -sh $dir',  );
}

Ou talvez fazendo uso do módulo Filesys::DiskUsage .

Mas como um forro:

perl -e 'for ( grep {-d} glob ( "*" ) ) { print join "\t", (stat)[9], 'du -sh $_' }'

Editar: com carimbos de data e hora formatados:

perl -MTime::Piece -e 'for ( grep {-d} glob ( "*" ) ) { print join "\t", Time::Piece->new((stat)[9])->strftime("%Y-%m-%d"), 'du -sh $_' }'

Editar: Versão mais antiga que 5.9.5 (que você deve realmente considerar atualizar, dado que já passou da EOL):

perl -MPOSIX -e 'for ( grep {-d} glob ( "*" ) ) { print join "\t", strftime("%Y-%m-%d",gmtime((stat)[9]))), 'du -sh $_' }'
    
por 22.12.2015 / 14:27

Tags