Localizando arquivos em um servidor Unix e classificando por tamanho

6

Eu tenho um servidor da web onde fiquei sem espaço e está causando problemas com os sites WordPress que estou executando neles.

Eu sei que tenho muitos arquivos .png grandes (o fato de que ele é PNG é um erro em si , mas não vamos entrar nisso.

Gostaria de obter a lista de arquivos PNG ou JPEG que estão no servidor e classificá-los por tamanho decrescente . Eu sei que posso usar ls -SlahR , mas a classificação é em uma base por pasta.

Eu então criei find . -name "*.png" | xargs -i -n1 ls -lah {} , o que é OK, exceto que (a) ele não classifica as linhas e (b) mostra as permissões e propriedades de arquivo que eu não poderia me importar menos.

Então, há algo melhor? Algo que produziria [size] [path_to_file]?

    
por David Brossard 27.09.2014 / 15:14

3 respostas

5

Você pode usar uma combinação de find , du e sort da seguinte maneira:

find <directory> -iname "*.png" -type f -print0 | xargs -0 -n1 du -b | sort -n -r

Isso procura todos os arquivos regulares em <directory> que terminam com .png (não diferencia maiúsculas de minúsculas). O resultado é então passado para xargs , que chama du com cada arquivo único, obtendo seu tamanho em bytes (devido a -b ) e passado para sort , que classifica o resultado numericamente ( -n ) pelo tamanho do arquivo em ordem decrescente ( -r ). O -print0 é usado para separar os resultados por \n em vez de %code% , para que você possa ter caminhos com caracteres estranhos, como espaços e novas linhas.

    
por 27.09.2014 / 15:33
10

Você pode fazer a coisa toda com (% GNU) find e sort , sem necessidade de du :

$ find . -iname '*png' -printf '%s %p\n' | sort -rn
68109 ./7.png
21751 ./2.png
21751 ./1.png
5393 ./6.png
2542 ./5.png
1717 ./4.png
1003 ./3.png
878 ./10.png
793 ./9.png
587 ./8.png
    
por 27.09.2014 / 15:37
2

E, caso você precise ter a versão mais compatível, é possível fazer isso regularmente e classificar (não depender de extensões do gnu, como printf):

find . -ls | grep -i -e '\.png$' -e '\.jpe*g' | sort -k7,7nr

-k7,7 : Classificar nas colunas 7 to 7 (ou seja, apenas 7)   (... isso deve ser um parâmetro, permitindo que um altere o número da coluna, caso seu antigo sistema encontre -ls tamanhos de saída em bytes em uma coluna diferente)

    
por 28.09.2014 / 08:57

Tags