Как мне перечислить количество слов в нескольких файлах?


9

Скажем, мне нужно узнать, сколько слов в каждом файле содержат слово «работа».

Я знаю, что найти файлы с «работой» было бы ls work. И выяснить количество слов было быwc -w

Однако я попробовал это, и, похоже, просто отображает количество файлов, а не количество слов, объединенных во всех файлах (которые мне нужны):

ls work | wc -w

Так, скажем, если есть 14 файлов, которые следуют предварительному условию «работа», он будет отображать 14, а не количество слов.

Ответы:


17

Синтаксис есть wc -w [FILE]. Если вы не используете FILE, но труба в выходных данных ls workбудет считать только то, что будет прочитано на stdin.

Вам нужно указать сам текст:

cat *work* | wc -w

Альтернативу можно выполнить wcс find -exec. Но имейте в виду, что это может показать несколько «итоговых» сумм, которые findбудут вызываться wcнесколько раз, если файлов много.

find ./ -type f -name "*work*" -exec wc -w {} +

Я использовал findкоманду, чтобы также иметь возможность суммировать количество строк с помощью wc -l. Удивительно!
cody.codes

3

Вы можете работать wcс несколькими файлами, а затем использовать встроенную оболочку, *которая добавляет все не скрытые файлы в рабочем каталоге к wcпараметрам.

wc -w *work*

Если имя каталога содержит, workто это покажет вывод вместе с ошибкой .. хаком будет перенаправить STDERR .. 2>/dev/nullхотя вы должны использовать что-то вроде, findчтобы получить только файлы ..
heemayl
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.