encontra contagem de imagens dentro de um diretório

2

Eu queria encontrar o número de arquivos de imagem dentro de um diretório. Acabei usando isso:

find . -type f  -exec file {} \; | grep -c -i 'image'

Isso parece uma maneira ineficiente de fazer isso. Eu poderia pensar em outra maneira de fazer isso - usando uma instrução OR, mas não consegui descobrir na página de manual como isso poderia ser feito.

Alguma idéia de como isso poderia ser feito com mais eficiência? Eu não quero executar os comandos acima em um diretório com um grande número de arquivos e ter uma eternidade.

    
por Anirudh 14.06.2012 / 11:15

3 respostas

4

Se você quiser procurar imagens por extensão, use o seguinte comando:

find -type f -name *.gif -o -name *.jpg -o -name *.bmp

É claro que você precisa listar todas as extensões de seu interesse.

Para obter a contagem, você pode anexar | wc -l .

    
por 14.06.2012 / 11:22
2

Você pode obter uma melhoria de eficiência usando \+ em vez de \; . A diferença aqui é que \+ passa todos os arquivos encontrados para uma única execução de file , em que \; executa file uma vez para cada arquivo encontrado.

find . -type f  -exec file {} \+ | grep -c -i 'image'

Você terá problemas se encontrar mais arquivos do que file pode receber como argumentos. Você poderia canalizá-lo por meio de xargs com a opção --max-args , se esse for o caso.

    
por 14.06.2012 / 12:43
1

se você quiser encontrar arquivos por tipo mime de arquivo, neste caso, "imagem", você precisará do seguinte comando

   find . -type f -print0 | xargs -0 file -i | grep -i image | wc -l
    
por 14.06.2012 / 12:16

Tags