Если вы хотите подсчитать количество строк для каждого отдельного файла:
find . -type f -exec wc -l {} + | awk '! /^[ 0-9]+[[:space:]]+total$/'
Я исключил все строки, потому что их будет несколько с таким количеством обрабатываемых файлов. find ... -exec ... +
попытается вместить как можно больше имен файлов в одну командную строку, но это будет НАМНОГО меньше, чем 119766 файлов .... вероятно, всего несколько тысяч (самое большее) на вызов wc
, и каждый из них приведет к отдельной независимой строке «total».
Если вы хотите, чтобы общее количество строк во всех файлах было объединено, вот один из способов сделать это:
find . -type f -exec wc -l {} + |
awk '/^[ 0-9]+[[:space:]]+total$/ {print $1}' |
xargs | sed -e 's/ /+/g' | bc
Это печатает только количество строк в общих строках, направляя их в xargs
, чтобы получить считает все в одной строке, затем sed для преобразования пробелов в знаки +
, а затем передает лот в bc
для выполнения расчета.
Пример вывода:
$ cd /usr/share/doc
$ find . -type f -exec wc -l {} + |
awk '/^[ 0-9]+[[:space:]]+total$/ {print $1}' |
xargs | sed -e 's/ /+/g' | bc
53358931