Як перерахувати кількість слів у кількох файлах?


9

Скажіть, мені потрібно з'ясувати, скільки слів у кожному файлі, у яких є слово "робота".

Я знаю, що знайти файли з «роботою» в ньому було б ls work. І щоб з'ясувати кількість слів, це було бwc -w

Однак я спробував це, і, здається, просто відображається кількість файлів, а не кількість слів, об'єднаних у всіх файлах (що мені потрібно):

ls work | wc -w

Тож скажіть, якщо є 14 файлів, які слідують за попереднім запитом 'work', він відображатиме 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параметрів 's.

wc -w *work*

Якщо ім’я каталогу містить, workто це покаже вихід разом із помилкою .. хак буде полягати в переадресації STDERR .. 2>/dev/nullХоча вам слід використовувати щось на кшталт, findщоб отримати лише файли ..
heemayl
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.