Filtra a saída ls com base no tamanho do arquivo

4

Eu quero filtrar a saída do comando ls com base no tamanho do arquivo. Quaisquer arquivos .jpg ou .png maiores que 100KB devem ser reportados na saída.

Eu consegui filtrar os arquivos .png / .jpg, mas não consigo descartar arquivos menores que 100 KB.

Aqui está o que estou usando atualmente:

ls -lah | grep '.png\|.jpg'

Alguma idéia de como posso fazer isso?

    
por smokinguns 16.05.2011 / 20:42

4 respostas

2

Como outros sugeriram, find permitirá que você encontre arquivos em intervalos de tamanho especificados. O Find produz apenas o caminho para cada arquivo, no entanto. Além disso, sem qualificação adicional, find encontrará todos os arquivos no diretório atual e em todos os diretórios abaixo do diretório atual. O seguinte pesquisa apenas o diretório atual e usa ls para exibir os resultados.

find . -maxdepth 1 -size +200 \( -name \*.png -o -name \*.jpg \) -print | xargs ls -ldh

Note que o tamanho está em blocos, onde um bloco é frequentemente, se nem sempre, 512 bytes.

    
por 16.05.2011 / 21:09
4

Você pode fazer isso usando find :

find . -type f -size +100k | grep '.png\|.jpg'

Em que +100k especifica o tamanho em KB, o que significa que apenas arquivos maiores que esse devem ser produzidos. find também tem outras opções interessantes, por exemplo, listar apenas arquivos que foram criados há um certo tempo. Veja man find para mais detalhes.

Os itens acima também podem ser reescritos como

find . -type f -size +100k -name "*.png" -o -name "*.jpg"
    
por 16.05.2011 / 20:45
3

Use find em vez de ls :

find . -type f -size +100k \( -name \*.png -or -name \*.jpg \)
    
por 16.05.2011 / 20:50
0

Usando du

du -a --apparent-size -t +100k | grep '.png\|.jpg'
    
por 27.09.2018 / 21:45