Я использую утилиту wc в сценарии оболочки, который я запускаю из 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 написано:
Печать количества строк, слов и байтов
для каждого ФАЙЛА и итоговой строки, если
указано более одного ФАЙЛА.
В нем ничего не говорится о нескольких общих строках (промежуточные итоговые значения или что-то в этом роде), так кто здесь виноват?