Получить среднее количество слов в файле - PullRequest
1 голос
/ 05 февраля 2012

Если у меня есть папка с текстовыми файлами, как я могу получить среднее количество слов на файл, используя команды Bash?

Я знаю, что могу использовать wc -w, чтобы получить слова для каждого файла, но я не уверен, как получить общее количество слов во всех файлах, а затем разделить это число на количество текстовых файлов

Ответы [ 4 ]

5 голосов
/ 05 февраля 2012

Это рекурсивно обходит файловую систему и подсчитывает все слова и файлы.В конце он делит общее количество слов на количество файлов:

find . -type f -exec wc -w {} \; | awk '{numfiles=numfiles+1;total += $1} END{print total/numfiles}'
1 голос
/ 05 февраля 2012

Вы можете получить общее количество слов по:

cat *.txt | wc -w

и номер файла по:

ls *.txt | wc -l

Тогда вы можете разделить их.

0 голосов
/ 05 февраля 2012

Решение Хуанга очень хорошее, но оно выдаст ошибки в любых каталогах.И деление - это немного больно, так как вся арифметика в оболочке с целыми числами.Вот скрипт, который делает то, что вы хотите:

#!/bin/sh

for file in *; do
    test -f "$file" || continue
    c=$( wc -w "$file" | awk '{print $1}' )
    : $(( total += $c ))
    : $(( count += 1 ))
done

echo $total $count 10k / p | dc | sed 's/0*$//'

Но решение awk для овсянки - это путь.

0 голосов
/ 05 февраля 2012

Это всего лишь совет. Вы можете использовать Loops и Переменное присвоение .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...