Я прочитал здесь, что вы можете посчитать количество вызовов commandв -exec command {} +, отправив по трубке | wc -lдо конца.
Хотя я понимаю, что -execdirэто отличается, в том, что для каждого соответствующего подкаталога, который findобнаруживает, он запускает вызов commandиз подкаталога, в котором он содержится, если у меня более одного файла, который совпадает в подкаталоге, я в итоге получаю количество вызовов, равное количеству соответствующих подкаталогов, а не количество вызовов, соответствующих количеству соответствующих файлов в этих подкаталогах?
Я заканчиваю с последним, когда я запускаю следующее:
$ find . -name "bob*" -execdir echo {} + | wc -l
Страница справочника для execdir command {} +государств заявляет, что первое должно иметь место:
Как и в случае с
-execдействием, в+форме-execdirбудет создана командная строка для обработки более одного сопоставленного файла, но при любом вызове изcommandэтого списка будут перечислены только файлы, которые существуют в одном подкаталоге.
т.е.
Я получаю:
./file1inDir1
./file2inDir1
./file3InDir2
./file4InDir3
Когда я ожидаю этого, основываясь на справочной странице:
./file1inDir1 ./file2inDir1
./file3InDir2
./file4InDir3
echoи аргументы генерируются,{} +а у вас нет новых строк в именах файлов (большинство людей этого не делают), ТОГДА число строк - это количество вызовов, и это работает. Если команда говорит,head -n 999000 /dev/urandomэто идет ужасно неправильно.