biggest (){
du -k * | sort -nr | cut -f2 | head -20 | xargs -d "\n" du -sh
}
Obs: Agradecimentos aos membros da lista de shell script do yahoo:
http://br.groups.yahoo.com/group/shell-script/message/29808
Agora vamos explicar o comando procê nun ficar tonto:
du -k ...... exibe em múltiplos de 1000
sort -nr ... ordena numericamente em ordem inversa
cut -f2 ... pega so os nomes
head ...... exibe os 10 maiores
xargs -d "\n" entrega a lista para o xargs indicando quebra de linha como separador
du -sh ..... faz o calculo do tamanho
Outra versão que ainda vou ter que analizar
du | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
Usando esta segunda versão o resultado deve ser filtrado com "head -valor"
biggest () {
du | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
}
Referência command-line-fu
Leia todos os posts sobre shell script:
http://vivaotux.blogspot.com/search/label/bash
Não achei que esse comando funciona como o esperado, ele acaba retornando apenas os diretórios.
ResponderExcluirTente o seguinte comando:
find / -type f -print | xargs -d "\n" ls -sk | sort -nr | head
ou
find / -type f -print 2> /dev/null | xargs -d "\n" ls -sk 2> /dev/null | sort -nr | head
se alterar-mos a saida para ser um pouco mais longa os arquivos começam a aparecer, é que o comando, dependendo de como é montado pode realmente listar só pastas, se por exemplo listar-mos somente os 10 maiores, certamente as pastas aparecerão primeiro, é só uma questão de personalizar o comando.
ResponderExcluir