Listar pastas maiores que 10G e enviar para os respectivos proprietários sobre o uso

1

Em nosso ambiente, temos uma montagem NFS que contém todos os diretórios base dos usuários.

Eu quero encontrar os usuários cujos tamanhos de diretórios pessoais sejam maiores que 10G e enviar uma notificação para eles. Eu tentei:

du -sh * | sort -hr   

Isso funcionou como um encanto, mas não consegui encontrar o comando para extrair os diretórios de tamanho > 10 G.

Eu tentei find . -size +10G -exec ls -lhS {} \; , mas não funcionou.

Qual é a melhor maneira de encontrar / extrair os diretórios com tamanho maior que 10G?

    
por Kannan AnandaKrishnan 10.08.2015 / 16:50

1 resposta

3

Isso deve ser feito.

Onde a primeira coluna (tamanho) excede 10gb, imprima a segunda coluna (nome do diretório)

du -sk * | awk '$1 > 10485760 { print $2 }'

Ou, conforme solicitado, para mostrar em forma legível, como abaixo. A expressão regular garante que a coluna 1 termine em G (gigabytes) e a parte substr tira a letra final da coluna 1 e verifica se é mais de 10.

du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 10 { print $0 }'

Exemplo:

du -sh *
2.5G    steve
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 1 { print $0 }'
2.5G    steve
du -sh * | awk '$1 ~ /G$/ && substr($1,0,length($1)-1) > 3 { print $0 }'
(no output)
    
por 10.08.2015 / 16:56