O que rm {} + faz?

3

Como em

find -L /etc/ssl/certs/ -type l -exec rm {} +

Portanto, ele encontra todos os links simbólicos quebrados e os exclui. Mas como exatamente interpreto a parte {} + ?

    
por yanchenko 09.10.2009 / 17:12

2 respostas

4

O {} bit é o espaço reservado para o comando exec . Quaisquer arquivos encontrados por find são inseridos no lugar dos colchetes. O + significa criar uma longa lista dos arquivos encontrados e chamar o exec em todos ao mesmo tempo, em vez de um por vez, como o mais tradicional -exec {} \; variant.

    
por 09.10.2009 / 17:17
11

De man find :

   -exec command {} +
   This variant of the -exec option runs the specified  command  on
   the  selected  files, but the command line is built by appending
   each selected file name at the end; the total number of  invoca-
   tions  of  the  command  will  be  much  less than the number of
   matched files.  The command line is built in much the  same  way
   that  xargs builds its command lines.  Only one instance of '{}'
   is allowed within the command.  The command is executed  in  the
   starting directory.

Por isso, irá chamar o comando:

rm [filename1] [filename2] [...] [lastfilename]

Se houver mais arquivos que podem caber na lista de argumentos, rm será chamado mais de uma vez. (Isto é o que o xargs faz.)

Sem o {} + , ele só chamaria rm várias vezes sem argumentos.

    
por 09.10.2009 / 17:15

Tags