Este é um problema de desempenho de find
. Em findutils
versão 4.3.4, uma solução alternativa teve que restringir o número de argumentos que -execdir ... {} +
usará para 1. Na versão 4.5.9 o limite foi removido.
Veja um exemplo:
$ mkdir -p dir{1..3}
$ touch dir{1..3}/file1 dir2/file{1..3}
$ find
.
./dir1
./dir1/file1
./dir2
./dir2/file1
./dir2/file2
./dir2/file3
./dir3
./dir3/file1
Com -execdir {} +
, o comando deve ser executado 3 vezes. A segunda invocação deve ter 3 argumentos.
Com find
4.4.2:
$ find-4.4.2 . -name "file*" -execdir sh -c 'echo "Executing $@ in $(pwd)"' find-sh {} +
Executing ./file1 in /path/to/dir1
Executing ./file1 in /path/to/dir2
Executing ./file2 in /path/to/dir2
Executing ./file3 in /path/to/dir2
Executing ./file1 in /path/to/dir3
Com find
4.6.0:
$ find-4.6.0 . -name "file*" -execdir sh -c 'echo "Executing $@ in $(pwd)"' find-sh {} +
Executing ./file1 in /path/to/dir1
Executing ./file1 ./file2 ./file3 in /path/to/dir2
Executing ./file1 in /path/to/dir3