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.
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.
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.
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 $_' }'
Tags files