Assuma o controle de seu espaço em disco. Encontre arquivos maiores que um determinado tamanho de arquivo – dica totalmente explicada :)

Eu, muitas vezes, adoraria descobrir que pequenas coisas misteriosas podem espremer os tubos de vento do meu disco rígido de aparentemente 1 TB para um espaço em disco disponível de 80 GB (oh, sim, isso acontece comigo com mais frequência )

Então, eu uso esta função bash simples para listar rapidamente o caminho para arquivos maiores que 1 GB de tamanho.

find . -type f -size +1G

Este é um recurso de localização padrão . Posso melhorar o acima para criar uma função bash rápida que me permitirá fornecer o tamanho de arquivo mínimo necessário, eu quero, ao fazer essa pesquisa (note que, eu preferiria saber quanto tamanho um arquivo individual está tomando e, portanto, , Executo du nos arquivos retornados):

# find all files in a given directory (or current directort) which are larger
# than a specified size (default: 100MB)
# size should be specified in MBs
function fileswithsize() {
size
=${1:-100} && dir="${2:-.}"
find
"${dir}" -type f -size "+${size}M"
-exec du -sh "{}" ;
}

A função acima me permitirá localizar todos os arquivos maiores que um determinado tamanho em um determinado diretório e exibir seus tamanhos também .

Agora, posso executar estes comandos em meu sistema:

# files larger than 100 MB in current directory
fileswithsize

# files larger than 400MB in current directory
fileswithsize
400M
# files larger than 1 GB inside your home directory
fileswithsize
1G ~

Espere, mas não é isso!
Podemos definitivamente estender isso ainda mais para fazer algo assim:

# files sorted by size in a human-readable display
function filesbysize() {
size
=${1:-100} && dir="${2:-.}"
find
"${dir}" -type f -size "+${size}M"
-exec du -sh "{}" ; | sort -h
}

O item acima listará todos os arquivos maiores do que o tamanho determinado e os classificará de acordo, mantendo a forma legível para os tamanhos de arquivo.

Ai de mim! O acima não funcionará com Mac OSX , já que seu comando sort não leva -h como uma opção. Nesse caso, podemos ser um pouco mais espertos … Pelo menos, acho que sim! 🙁

# reimplement our function to support MacOSX, as well.
function filesbysize() {
size
=${1:-100} && dir="${2:-.}"
find
"${dir}" -type f -size "+${size}M" -size -1G
-exec du -sh "{}" ; | sort -n
find
"${dir}" -type f -size +1G -size -1T
-exec du -sh "{}" ; | sort -n
find
"${dir}" -type f -size +1T -size -1P
-exec du -sh "{}" ; | sort -n
}

O acima funciona desde:

  • find é muito rápido para localizar arquivos nessas restrições. Claro, chamá-lo três vezes é contra a ideia de desempenho, mas pessoalmente, não me importo muito com isso.
  • dividir os tamanhos dos arquivos dessa maneira permite sort -n para listar os arquivos de uma maneira ordenada.

Se o método final não for o que você usaria, espero receber em breve um e-mail de alguém com um código aprimorado.