Digamos que seu find
localize os seguintes arquivos:
./foo/bar
./foo/baz
./foo/quux
Se você usar -execdir [...]+
, o comando efetivo resultante será:
( cd ./foo; command bar baz quux )
Ao contrário de (efetivamente) isso, se você usa -execdir [...] \;
:
( cd ./foo; command bar )
( cd ./foo; command baz )
( cd ./foo; command quux )
O mesmo é verdadeiro para -exec
em vez de execdir
, mas especificará o caminho em vez de alterar o diretório de trabalho. Se você usar -exec [...]+
, o comando efetivo resultante será:
command ./foo/bar ./foo/baz ./foo/quux
Ao contrário de (efetivamente) isso, se você usa -exec [...] \;
:
command ./foo/bar
command ./foo/baz
command ./foo/quux
Vamos ver como isso se comporta com arquivos encontrados em dois diretórios:
$ tree
.
├── bar
│ ├── bletch
│ └── freeble
└── foo
├── bar
├── baz
└── quux
$ find . -type f -exec echo {} \;
./foo/baz
./foo/quux
./foo/bar
./bar/bletch
./bar/freeble
$ find . -type f -execdir echo {} \;
./baz
./quux
./bar
./bletch
./freeble
$ find . -type f -exec echo {} +
./foo/baz ./foo/quux ./foo/bar ./bar/bletch ./bar/freeble
$ find . -type f -execdir echo {} +
./baz ./quux ./bar
./bletch ./freeble