De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

Comando find - Como Usar -execdir para Executar Comandos no Linux

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 27 de março de 2025

A diretiva -execdir do comando find no Linux é uma opção poderosa que permite executar comandos em arquivos encontrados pelo find, mas com uma diferença importante: a execução ocorre no diretório em que o arquivo foi encontrado, e não no diretório de onde o comando find foi executado. Isso aumenta a segurança, especialmente ao lidar com caminhos que podem ter permissões inseguras.

A sintaxe básica para usar a diretiva -execdir é:

find caminho_base [opções] -execdir comando {} \;
Opção Explicação
caminho_base O diretório inicial onde o find deve começar a busca.
opções Critérios de busca (por exemplo, -name, -type, -size, etc.).
comando O comando que você deseja executar para cada arquivo encontrado.
{} Um marcador de posição que será substituído pelo nome do arquivo atual.
; Um delimitador que indica o fim do comando a ser executado.

Por exempo, para encontrar todos os arquivos .txt em um diretório e listar seus conteúdos usando o comando cat:

$ find /caminho/para/diretorio -name "*.txt" -execdir cat {} \;

A principal diferença entre -execdir e -exec é onde o comando é executado:

-exec: Executa o comando a partir do diretório a partir do qual o comando find foi invocado.

-execdir: Executa o comando a partir do diretório onde o arquivo foi encontrado.

Essa distinção é crucial quando o comando precisa operar relativemente ao local dos arquivos encontrados.

Usar a diretiva -execdir apresenta as seguintes vantagens:

  • Segurança: Diminui o risco de vulnerabilidades associadas a caracteres maliciosos no nome do arquivo e no caminho, pois a execução ocorre no diretório do arquivo encontrado.

  • Facilidade de Uso: Quando o comando precisa acessar arquivos ou diretórios relacionados ao arquivo encontrado, -execdir pode simplificar o caminho necessário.

Sempre teste seus comandos com cuidado, especialmente quando usar o comando rm ou comandos que alteram dados.

Combine -execdir com outros filtros do find como -type para especificar tipos de arquivos, ou -mtime para modificar tempos para buscas mais precisas.

Use -okdir em vez de -execdir se quiser uma confirmação antes de executar cada comando para maior segurança.

Vejamos um exemplo mais avançado de uso.

Digamos que você queira compactar todos os arquivos .log em diferentes subdiretórios, criando um arquivo .zip para cada um:

$ find /caminho/para/logs -name "*.log" -execdir zip "{}.zip" "{}" \;

Esse comando cria um arquivo zip para cada arquivo .log encontrado, dentro do diretório onde o arquivo original está localizado.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida