No linux, como você obtém um tamanho total de uma pasta para arquivos com 1MB ou mais?

2

Oi eu estou fazendo alguma limpeza no meu servidor e eu quero saber como eu iria obter o tamanho total de uma pasta de arquivos que são 1mb e até 1mb e também abaixo. Cheguei até:

ls -lh | grep 'M '

Mas não consigo o tamanho total de tudo.

    
por Patoshi パトシ 01.11.2013 / 16:37

2 respostas

4

Em vez de analisar a saída de ls (que é considerada uma prática muito ruim ), você pode usar find e du da seguinte forma:

  • Para localizar todos os arquivos ( -type f ) no diretório atual e subdiretórios de tamanho ≥1M ( -size +1M ), e obtenha a soma de seus tamanhos:

    find . -type f -size +1M -print0 | du -sch --files0-from=- | tail -1
    
  • Similar, mas não recurse em subdiretórios ( -maxdepth 1 ):

    find . -maxdepth 1 -type f -size +1M -print0 | du -sch --files0-from=- | tail -1
    
  • Para arquivos de tamanho ≤1M:

    find . -type f -size -1M -print0 | du -sch --files0-from=- | tail -1
    find . -maxdepth 1 -type f -size -1M -print0 | du -sch --files0-from=- | tail -1
    

Isso funciona desde que sua versão de du suporte a opção --files0-from . Se não, você poderia tentar isto:

find . -type f -size +1M -exec du -sch {} + | tail -1

mas se você tiver muitos arquivos, não funcionará (você receberá uma resposta errada)! Nesse caso, você pode tentar isso:

find . -type f -size +1M -exec sh -c 'du -sch "$@" | tail -1' _ {} +

você terá várias linhas (esperamos que não sejam muitas) e terá que fazer as contas sozinho.

Com find , você tem um controle completo sobre quais arquivos deseja considerar! suas possibilidades de filtragem são praticamente infinitas.

Felicidades!

Você receberá respostas erradas com ls -1h | grep 'M ' caso tenha arquivos que contenham a string "M " . E a saída de ls deve ser lida por humanos, não por máquinas ... as máquinas têm outros meios muito melhores para obter esse tipo de informação.

    
por 01.11.2013 / 17:48
0

Isso funcionou para mim.

ls -lh | grep 'M' | awk '{ SUM += $5} END {print SUM}'
    
por 01.11.2013 / 17:11