Программа xargs разбивает вещи на пакеты, чтобы учесть ограничения из-за максимальной длины командной строки unix. Это все еще более эффективно, чем запуск вашей подкоманды по одному, но для длинного списка входов она будет запускать команду достаточно раз, чтобы каждый «запуск» был достаточно коротким, чтобы не вызывать проблем.
Из-за этого вы, вероятно, видите одну выходную строку на «пакет», которую должен запустить xargs.
Поскольку вы можете найти это полезным / интересным, справочную страницу можно найти здесь: http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs
Еще одна вещь, на которую следует обратить внимание (и это может быть опечатка в вашем посте или мое недоразумение), это то, что у вас есть "* .txt" неэкранированный / цитируемый. То есть у вас есть
find . -name *.txt | xargs du -hc
где вы, вероятно, хотите
find . -name \*.txt | xargs du -hc
Разница в том, что командная строка может расширять * в список имен файлов, которые совпадают ... вместо передачи * в find, который будет использовать его в качестве шаблона.