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.
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:
-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.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários