shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Remover arquivos que não são imagens usando mimetype


From: Guilherme Gall
Subject: Re: [shell-script] Remover arquivos que não são imagens usando mimetype
Date: Mon, 26 Apr 2010 06:20:34 -0300

Pensei no seguinte teste para determinar se o arquivo é imagem ou não:

$ if [[ $(file --mime-type arquivo.jpg) =~ 'image' ]]; then echo 'É Imagem'; fi

Para resolver seu problema, só colocar esse teste num laço iterando
sobre os arquivos e caso seja imagem, mover o arquivo.
Não sei se é a melhor abordagem, mas como você disse que perguntou
para aprender maneiras novas de fazer as coisas fica minha sugestão de
usar o operador =~ disponível no bash a partir da versão 3. Pode ser
que não seja novidade para você mas já vi muita gente usando comandos
externos desnecessariamente por desconhecer o =~.

Saudações,

Guilherme Magalhães Gall (GMGall)
GPG Public Key ID: 0F498058



Em 26 de abril de 2010 00:02, Helton Moraes <address@hidden> escreveu:
> Caros colegas
>
> Tenho pastas baixadas com o wget que contêm galerias de wallpapers mas junto
> vêm documentos html, css, scripts, etc. Pretendo criar um script que remova
> de dentro de uma pasta e seus subdiretórios todos os arquivos que não forem
> JPEG.
> Inicialmente usei um comando com expressão regular que pegasse o que não
> terminava com .jpeg ou .jpg, mas como às vezes a extensão do arquivo vinha
> com problema, ou nem vinha, eu ia lá na lixeira temporária que criei para o
> script, e via arquivos com extensão deformada, mas que o Nautilus dizia
> serem "imagens jpeg", e de fato eram.
>
> Assim sendo, estou usando o comando 'mimetype', que mostra o formato MIME
> dos arquivos, da seguinte forma:
>
> $ mimetype -b `find ./ -type f` | sed /^$/d        # o sed é só pra tirar as
> linhas em branco
>
> O resultado é do tipo: (obs: aqui os arquivos não estão identificados, é só
> pra dar idéia do tipo de saída do comando, cada linha é um arquivo
> encontrado)
>
> image/gif
> image/jpeg
> image/jpeg
> image/jpeg
> image/jpeg
> image/jpeg
> image/jpeg
> image/jpeg
> image/jpeg
> application/x-php
> application/x-trash
> text/html
> text/html
> text/html
> application/x-trash
> application/x-trash
> image/jpeg
> image/jpeg
> image/jpeg
> image/jpeg
>
> ENTÃO, a idéia seria usar a saída desse comando dentro de um laço: se a
> condição é preenchida, move o arquivo, se não, nada acontece.
> Outra possibilidade seria dar um mv em todos os arquivos de uma vez só,
> depois de ter criado uma lista, mas acho que teria que usar loop de qq
> jeito.
>
> Imagino que isso seja meio banal, e que eu conseguiria resolver sozinho, mas
> mantendo o costume de procurar boas práticas entre os colegas mais
> experientes, pergunto:
>
> Alguma sugestão de estratégia/comandos para utilizar?
>
>
>
> Grato pela atenção
>
> Helton moraes
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
> Servidor Newsgroup da lista: news.gmane.org
> Grupo: gmane.org.user-groups.programming.shell.brazil
>
> Links do Yahoo! Grupos
>
>
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]