Есть ли способ обойти использование префикса «sudo»

Если вы хотите подсчитать количество строк для каждого отдельного файла:

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
0
22.03.2019, 16:45
0 ответов

Теги

Похожие вопросы