Я использую утилиту wc в оболочке script, которую я запускаю из Cygwin, и я заметил, что в ее выходе имеется более одной строки с "total".
Следующая функция используется для подсчета количества строк в моих исходных файлах:
count_curdir_src() {
    find . '(' -name '*.vb' -o -name '*.cs' ')' \
        -a '!' -iname '*.Designer.*' -a '!' -iname '.svn' -print0 | \
    xargs -0 wc -l
}
Но его вывод для определенного каталога выглядит следующим образом:
$ find . '(' -name '*.vb' -o -name '*.cs' ')' -a '!' -iname '*.Designer.*' -a '!' -iname '.svn' -print0 | xargs -0 wc -l
     19 ./dirA/fileABC.cs
    640 ./dirA/subdir1/fileDEF.cs
    507 ./dirA/subdir1/fileGHI.cs
   2596 ./dirA/subdir1/fileJKL.cs
(...many others...)
     58 ./dirB/fileMNO.cs
     36 ./dirB/subdir1/filePQR.cs
 122200 total
  6022 ./dirB/subdir2/subsubdir/fileSTU.cs
    24 ./dirC/fileVWX.cs
(...)
    36 ./dirZ/Properties/AssemblyInfo.cs
    88 ./dirZ/fileYZ.cs
 25236 total
Похоже, что wc сбрасывается где-то в этом процессе. Это не может быть вызвано символами пробела в именах файлов или именах каталогов, потому что я использую параметр -print0. И это происходит только тогда, когда я запускаю его на самом большом исходном дереве.
Итак, это ошибка в wc, или в Cygwin? Или что-то другое? В man-странице wc говорится:
Печать строк новой строки, слова и байта для каждого FILE и общей строки, если указано более одного FILE.
В нем ничего не говорится о множественных тотальных строках (промежуточные подсчеты или что-то еще), так кто виноват здесь?
