Pages

Saturday, May 27, 2006

Considerações sobre o find ./ -exec

Estava pensando no tempo que eu não escrevia alguma coisa, e aí, resolvi escrever algo.
Nesse meio tempo estive envolvido com diversos pequenos detalhes, como criar uma lista de gerenciamento de tarefas em modo texto, aprender a usar IRC (acreditem ou não eu não sabia), arrumar um jeito de modificar as permissões de execução de arquivos copiados de um CD que tenha compatibilidade com o Windows, entre outros.


Nesse último ponto foi realmente uma aventura. Isso por que eu desenvolvi um script, mas o script precisava de controles (quando começa e quando termina, se tem ou não espaço no nome, etc) que fizeram desse script algo muito grande e complicado.

Seguindo a filosofia de um antigo professor que dizia: "se estiver muito complicado, está errado ..."; eu busquei uma nova solução, que decididamente é muito mais simples.

A solução passa pela execução do comando find. Eu quase nunca uso o find, isso por que o slocate consegue fazer tudo que eu preciso, e quando não consegue eu uso o find na forma mais simples "find ./". Não é incomum, entretanto, encontrar tutoriais ensinando a utilizar a opção -exec, o detalhe é que normalmente utiliza-se essa opção com exemplos de "rm", ou seja, eliminar arquivos.

Nunca havia passado pela minha cabeça usar outro comando. Até agora.
Observe o comando:

find ./ -type f -exec chmod -x '{}' \;

com ele é possível modificar as opção de execução de arquivos sem alterar as opções de execução dos subdiretórios, coisa que acontece quando utilizamos o comando "chmod -R -x" e que inviabiliza a navegação pelos diretórios, enquanto os diretórios não possuirem permissão de execução.

Para facilitar a minha vida, inclui a seguinte linha,

alias fat2linux="find ./ -type f -exec chmod -x '{}' \;"

no meu .bashrc.

Isso permite arrumar as pemissões de execução dos arquivos de forma bem simples. Isso é muito para quem tem o hábito de copiar arquivos de CDs que foram gravados no Windows por outros ou que foram gravados no Linux com a compatibilidade com o Windows ativada. Também é muito útil para que usualmente transporta arquivos em Pendrives formatados em fat32 (aliás, é por isso que o comando que eu criei chama-se fat2linux).


Nota 1: A permissão de execução de um diretório siginifica que podemos executar comandos dentro dele, sem essa permissão, não é possível, por exemplo, digitar 'ls' dentro do diretório.

Nota 2: É possível fazer essa modificação proposta de n outras formas, incluindo utilizar o konqueror, por exemplo, minha proposta era utilizar apenas o terminal e com isso, nesse post, chamar a atenção para a opção -exec do find para uma aplicação diferente da eliminação de arquivos antigos ou backup incremental do sistema.


Technorati Tags:

1 comment:

  1. Creio que seria interessante mostrar também a utilização de alguns parâmetros do find tais como:

    -perm que permite pesquisar por um modo de permissão específico.

    -print que permite criar relatórios de suas buscas

    finalmente o comando find pipeado para o comando xargs que gera uma economia no processamento. Neste link:
    http://sergioaraujo.pbwiki.com/find
    tem uma seção sobre o find (pode haver algum erro) mas tem exemplos do uso do find com o xargs e como usar o -print
    Valeu!

    ReplyDelete