Pular para o conteúdo

Utilizando find + exec e agilizando tarefas

Dica publicada em Linux / Introdução
Tiago Moreira Rodrigues tiagomr
Hits: 42.150 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Utilizando find + exec e agilizando tarefas

Precisando automatizar algumas tarefas e com a necessidade de agilizá-las (remover, renomear, mudar permissão, entre outras) e ainda se tratando de muitos arquivos, podemos facilitar muito este trabalho utilizando apenas uma linha.

Aqui vou mostrar uma das tarefas mais simples que o find pode ajudar, ferramenta poderosa quando se sabe usar todas as suas opções. Fazendo-se buscas no Google pode-se achar muita coisa.

O problema

Remover JPGs.

Após copiar vários documentos e pastas, encontrei o problema: os arquivos jpg não poderiam estar dentro desta estrutura e haviam muitos espalhados por todos os lugares. Como já havia feito a cópia, não perderia tempo excluindo novamente os arquivos jpg.

A solução

Utilizar find + exec.

Nos sistemas Unix like, podemos encontrar muitas ferramentas que nos ajudam com pouco esforço. O grande lance é saber como usar cada uma delas.

O find é uma que nos ajuda em muitas coisas quando iniciamos nos sistemas Unix. Logo somos apresentados ao find como uma ferramenta de busca e, sempre que precisamos buscar algo, digitamos "find /caminho -name 'busca'", mas agora vamos falar do find não como uma ferramenta de busca, e sim produtividade.

Quando precisei remover todos os arquivos jpg fiz o seguinte:

$ find . -type f -name "*.jpg" -exec rm {} \;

Onde:
  • {} - arquivo encontrado;
  • \; - finaliza o comando.

Para todo arquivo jpg que encontrar, ele executará o comando rm para removê-lo.

Bom, isso resolveu meu problema, abaixo vou mostrar mais alguns comandos que podem ajudar.

Mudando as permissões somente dos diretórios:

$ find /home/* -type d -exec chmod 775 '{}' \;

Renomeando as extensões dos arquivo que estiverem em maiúsculas:

$ find . -name '.*' -prune -o -exec rename 's/\.jpg$/\.JPG/i' {} +

É isso ai, até a próxima.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
Nenhuma dica encontrada.

Introdução ao chmod

Instalando Java 8 na imagem do servidor LTSP para thinclient

Usando DBDesign no Linux sem instalar

Configurar DNS em Windows server para Proxy do Squid

Como descobrir qual distribuição Linux que está instalada

#1 Comentário enviado por Kerberus em 28/07/2008 - 13:00h
Parabens pelo post....Me ajudou mto...era o que eu estava precisando:D:D:D
#2 Comentário enviado por marcosfmo em 26/08/2015 - 22:23h
sempre muito bom utilizar esses comandos,
#3 Comentário enviado por cviniciussdias em 22/09/2016 - 17:23h
O \n seria necessário apenas se eu tivesse mais comandos seguindo este, não?
#4 Comentário enviado por fragaaaf em 08/04/2017 - 20:23h
Sempre encontro uma solução no "Viva o Linux". Obrigado!

Contribuir com comentário

Entre na sua conta para comentar.