Mostrando postagens com marcador wc. Mostrar todas as postagens
Mostrando postagens com marcador wc. Mostrar todas as postagens

Como localizar 'arquivos' que não obedeçam a um padrão?

Essa pergunta surge no seguinte contexto:

Você baixou por exemplo a biblioteca de imagens openclipart
que tem uma versão 'full', nesta versão além dos arquivos svg
vem também arquivos 'png', 'txt', 'pdf' entre outros, eu queria
fazer um cd para o Natal Livre 2008 e para diminuir o tamamnho
precisava deixar apenas os arquivso com extensão 'svg', fiz assim:

find ./clipart -type f -iregex '.*\.[^svg]$' | xargs -rm f

O find está buscando na pasta clipart por arquivos
'-type f' que obedeçam à expressão regular '.*\.[^svg]$'

O significado da expressão regular por sua vez é:

.* ......... qualquer caractere em qualquer quantidade
\. ......... seguido de um ponto
[^svg] ..... não seguido de svg (negação)
$ ........... seguido de final de linha

O xargs pega blocos de tamanho aceitáveis para a memória
evitando estouro de pilha e entrega para o comando de remoção
'rm'

A biblioteca openclipart tem muitas subpastas e agora eu
queria saber a quantidade de arquivos únicos

find ./clipart/ -type f -iregex ".*\.svg$" | xargs -i basename ./{} | sort | uniq | wc -l

Como saber quantos arquivos de texto tenho numa pasta?

A princípio parece uma resposta simples, alguém diria

 find ./ -maxdepth 1 -type f -iname \*.txt -print0 | xargs -0 wc -l


Acontece que há muitos arquivos de texto no linux que não tem
sequer extensão, como fazer então?
file * | grep ASCII | wc -l

Ainda restaria um problema pois arquivos 'UTF-8 Unicode text'
também são texto plano e não são detectados da forma descrita acima
usamos então a opão '-i' que força a exibição do tipo mime

Um erro que pode acontecer é que arquivos de texto
plano podem ser 'ASCII' assim como 'UTF-8 Unicode text'
para pegar ambos você usa o parâmetro -i do file
o que vai te dar o mime-type de cada arquivo
com o grep você deve pegar 'text/plain' e assim entregar ao
querido wc que fará a contagem para você.
file -i * | grep 'text/plain' | wc -l

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo