entendendo algumas flags em find-command no linux

4

Eu queria mover apenas arquivos no Linux e encontrei a resposta aqui como segue:

find . -maxdepth 1 -type f -exec mv {} destination_path \;

que funcionou para mim perfeitamente. Mas minhas perguntas são :

  1. qual é o significado de \; neste comando?

  2. O conjunto de chaves {} neste comando é equivalente a * ?

por user2804070 10.09.2015 / 08:12

1 resposta

8

O comando find assume que tudo entre a opção -exec e ; compreende o comando que você deseja executar em cada resultado da pesquisa.

Como ; é um caractere reservado no shell bash , você precisa escapar usando \ , caso contrário o bash o interpretará. Veja man bash para detalhes.

As chaves {} são um marcador de posição para cada resultado de pesquisa de localização.

O seguinte é da página man de find :

-exec command ;
   Execute command; true if 0 status is returned.
   All following arguments to find are taken to  be arguments 
   to the command until an argument consisting of ';' is encountered.
   The string '{}' is replaced by the current file name being
   processed everywhere it occurs in the arguments to the command, not
   just in arguments where it is alone, as in some versions of find.
   Both of these constructions might need to be escaped (with a
   '\') or quoted to protect them from expansion by the shell. 
    
por 10.09.2015 / 08:39