Eu li aqui que você pode contar o número de invocações command
no -exec command {} +
canalizando | wc -l
até o final dele.
Embora eu entenda que isso -execdir
é diferente, para cada subdiretório correspondente find
descoberto, ele executa uma invocação do command
subdiretório em que está contido, se eu tiver mais de um arquivo que corresponda a um subdiretório, eu acabo com o número de invocações igual ao número de subdiretórios correspondentes, e não o número de invocações que correspondem ao número de arquivos correspondentes nesses subdiretórios?
Estou terminando com o último quando executo o seguinte:
$ find . -name "bob*" -execdir echo {} + | wc -l
A página de manual dos execdir command {} +
estados em que o primeiro deve ser o caso:
Assim como a
-exec
ação, a+
forma de-execdir
criará uma linha de comando para processar mais de um arquivo correspondente, mas qualquer chamada especificadacommand
listará apenas os arquivos existentes no mesmo subdiretório.
ie
Estou entendendo:
./file1inDir1
./file2inDir1
./file3InDir2
./file4InDir3
Quando estou esperando isso, com base na página de manual:
./file1inDir1 ./file2inDir1
./file3InDir2
./file4InDir3
echo
e os argumentos forem gerados{} +
e você não tiver novas linhas em seus nomes de arquivos (a maioria das pessoas não) ENTÃO, o número de linhas é o número de chamadas e ele funciona. Se comando é dizerhead -n 999000 /dev/urandom
que dá terrivelmente errado.Respostas:
Esta é uma questão de desempenho de
find
. Nafindutils
versão 4.3.4, uma solução alternativa precisava restringir o número de argumentos que-execdir ... {} +
serão usados para 1. Na versão 4.5.9, o limite foi removido.Veja um exemplo:
Com
-execdir {} +
, o comando deve ser executado 3 vezes. A segunda invocação deve ter 3 argumentos.Com
find
4.4.2:Com
find
4.6.0:fonte