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.
Creio que seria interessante mostrar também a utilização de alguns parâmetros do find tais como:
ReplyDelete-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!