Program xargs dzieli rzeczy na partie, aby uwzględnić ograniczenia wynikające z maksymalnej długości linii poleceń unix. Jest to jeszcze bardziej wydajne niż uruchamianie twojej podkomendy po jednej na raz, ale na długą listę danych wejściowych polecenie będzie uruchamiane wystarczająco długo, aby każde "uruchomienie" było wystarczająco krótkie, aby nie powodowało problemów.
Z tego powodu prawdopodobnie zobaczysz jedną linię wyjściową na "partię", którą xargs musi uruchomić.
Bo może okazać się przydatna ciekawe, strona/man można znaleźć w Internecie na: http://unixhelp.ed.ac.uk/CGI/man-cgi?xargs
Inną rzeczą, aby pamiętać (i może to być błąd w poście lub mój nieporozumienie) jest że masz "* .txt" bez komentarza. Czyli masz
find . -name *.txt | xargs du -hc
gdzie prawdopodobnie chcesz
find . -name \*.txt | xargs du -hc
tą różnicą, że linia poleceń może być rozszerzanie * na listę nazw plików, które odpowiadają ... zamiast do przepuszczenia * znajdź, który użyje go jako wzorca.
Hm, ok. Próbowałem: znaleźć. -name * .txt | xargs -n 100000 du -hc Ale to nie działa - dostaję więcej subtotalów, nie mniej. Próbujesz znaleźć . -name * .txt | xargs -L 1000 du -hc "nie działa też dobrze. Albo "xargs: lista argumentów zbyt długa", albo działa tylko na bardzo niewielu plikach. Jakieś inne myśli? Dzięki! Alex –