Qual é o comando '+' in find para? [duplicado]

4

Algumas vezes me deparei com o uso de + ao usar comandos unix como find .

Exemplo de postagem de SO -

find -exec touch -t 201007162310.00 \+

Por favor, ajude-me a entender o uso disso.

    
por mtk 07.06.2013 / 15:21

1 resposta

10

De man find :

-exec command {} +

This variant of the -exec action 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 invocations 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 exemplo, com find -exec touch -t 201007162310.00 \+ , se o comando find sem o -exec fornecer os arquivos 1.txt , 2.txt e 3.txt , ele será exec:

touch -t 201007162310.00 1.txt
touch -t 201007162310.00 2.txt
touch -t 201007162310.00 3.txt

sem o \+ e

touch -t 201007162310.00 1.txt 2.txt 3.txt

com o \+ .

A última versão é mais rápida devido a um número (muito) menor de novos processos necessários, embora seja menos portátil (nem todas as implementações find o suportam). E, claro, se o comando que você tentou -exec não suportar receber vários arquivos como argumentos, não funcionará.

    
por 07.06.2013 / 15:24

Tags