Команда wc в Linux: подсчёт строк, слов и байтов

Если нужно быстро узнать число строк, слов, символов или байтов в файле — используйте wc. Команда проста, работает локально и в сочетании с пайпами. Учтите разницу между байтами и символами при работе с юникодом и выбирайте опции -l, -w, -m, -c, -L в зависимости от цели.
Что такое команда wc
Команда wc расшифровывается как «word count» и входит в набор стандартных утилит Unix/Linux. Это простая программа для подсчёта строк, слов, символов и байтов в потоке ввода или файле. Она присутствует по умолчанию во всех популярных дистрибутивах, поэтому ничего устанавливать не нужно.
Краткое определение: wc — утилита командной строки для подсчёта строк, слов, символов и байтов в тексте.
Основной синтаксис
wc [ОПЦИЯ] [ФАЙЛ]Для справки используйте встроенную страницу руководства:
man wcВажно: большинство примеров ниже используют термин UTF-8. При других локалях поведение счётчика символов может отличаться.
Пример: файл zen.txt
Создайте файл zen.txt и вставьте туда «Дзен Python», как в примере ниже. Если вы создаёте файл через cat, оставьте пустую строку перед вставкой.
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.[a]
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than right now.[b]
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea – let's do more of those!Это классический пример текста для демонстрации команды wc.
Базовый вывод wc
По умолчанию wc выводит три числовых поля и имя файла: количество строк, слов и байтов.
wc zen.txtПример вывода:
19 137 824 zen.txtПояснение: первые три числа — строки, слова, байты, затем имя файла.
Полезные опции
- -l, –lines — вывести только число строк
- -w, –words — вывести только число слов
- -c, –bytes — вывести только число байтов
- -m, –chars — вывести только число символов (unicode-aware при поддержке локали)
- -L, –max-line-length — длина самой длинной строки в символах
Примеры:
wc -l zen.txt19 zen.txtwc -w zen.txt137 zen.txtwc -c zen.txt824 zen.txtwc -m zen.txt818 zen.txtwc -L zen.txt67 zen.txtЗамечание: в этом файле число байтов (824) и число символов (818) отличаются из‑за символов, представленных многобайтово в UTF-8 или специальных HTML-сущностей в тексте. Всегда выбирайте -m для подсчёта видимых символов и -c для точного размера в байтах.
Несколько файлов одновременно
wc можно запускать над несколькими файлами — она выведет отдельные строки для каждого и итоговую сумму второй командой total.
wc zen.txt letters.txt num.txtПример вывода:
19 137 824 zen.txt
26 26 52 letters.txt
10 10 21 num.txt
55 173 897 totalПоследняя строка содержит суммарные значения для всех перечисленных файлов.
Использование wc с другими командами (пайпы)
wc часто применяют в конвейере команд, чтобы быстро получить числовую метрику от вывода другой утилиты.
Сосчитать количество элементов на Рабочем столе (без скрытых файлов):
ls Desktop | wc -lСосчитать количество процессов в текущем сеансе (включая заголовки, если они есть):
ps | wc -lНе забудьте, что ls по умолчанию сортирует и может изменять формат вывода; для точного подсчёта файлов в директории лучше использовать find:
find . -maxdepth 1 -type f | wc -lЭто посчитает обычные файлы в текущей директории, включая скрытые при использовании соответствующих опций.
Когда wc может давать неожиданные результаты
Важно
- Разница между байтами и символами: при использовании кодировки UTF-8 один визуальный символ может занимать несколько байтов. Для подсчёта символов используйте -m, для подсчёта размера файла в байтах — -c.
- Счёт слов определяется разделителями пробел, табуляция и перевод строки. Сложные определения слов, содержимое с пунктуацией или связки символов могут изменить результат.
- Подсчёт файлов через ls небезопасен в именах с переводами строки или пробелами. Для надёжности используйте find.
Примеры неудач:
- Файлы с непечатными символами или управляющими последовательностями могут исказить подсчёт строк.
- Если требуется учесть только уникальные слова или слова с учётом регистра, wc не подойдёт — используйте awk, sort и uniq.
Альтернативы и комбинации
- awk ‘{print NR}’ файл — можно вывести номера строк или пользоваться awk для сложной фильтрации и подсчётов по шаблону.
- grep -c ‘паттерн’ файл — считает строки, содержащие шаблон.
- sed -n ‘$=’ файл — быстрый способ получить число строк.
- find . -type f | wc -l — надёжный подсчёт файлов в дереве с учётом вложенных директорий.
Быстрая методология проверки результатов (мини‑план)
- Определите, что хотите посчитать: строки, слова, символы или байты.
- Убедитесь в локали: echo $LANG или locale. Для корректного подсчёта символов нужна UTF-8 локаль.
- Выберите флаг: -l, -w, -m или -c.
- Для подсчёта файлов используйте find вместо ls при наличии пробелов и специальных символов в именах.
- Проверьте результаты на небольших контрольных файлах.
Шпаргалка — быстрый чеклист
- Подсчитать строки: wc -l файл
- Подсчитать слова: wc -w файл
- Подсчитать символы: wc -m файл
- Подсчитать байты: wc -c файл
- Длина самой длинной строки: wc -L файл
- Сосчитать файлы в каталоге: find путь -type f | wc -l
Критерии приёмки (пример теста)
- Для входного файла test.txt с известными 10 строками команда wc -l test.txt должна вернуть 10.
- Для файла с UTF-8 символами команда wc -m возвращает количество видимых символов, а wc -c — размер в байтах.
- При подсчёте файлов через find все именованные файлы учитываются, символические ссылки учитываются при использовании -type f без дополнительных опций.
Когда использовать wc, а когда нет
Используйте wc, если нужно быстро получить простую метрику локального текста. Не используйте wc, если требуются:
- подсчёты уникальных слов, частотный анализ или игнорирование регистра — используйте awk/sort/uniq;
- точная аналитика по токенам в сложных языках — применяйте специализированные библиотеки для NLP;
- подсчёт размера на диске с учётом блоков — используйте du.
Короткий глоссарий
- слово — последовательность символов, разделённая пробелом, табуляцией или переводом строки
- байт — единица хранения данных, 8 бит
- символ — визуальный юникод‑кодпойнт
- локаль — настройка окружения, определяющая кодировку и правила классификации символов
Часто задаваемые вопросы
Как отличить байты от символов
Используйте -c для байтов и -m для символов. В UTF-8 один символ может занимать несколько байтов.
Можно ли посчитать только непустые строки
Да. Пример:
grep -cve '^\s*$' файлКак посчитать файлы рекурсивно
find /путь -type f | wc -lМожно ли подсчитать слова в выводе другой команды
Да. Пример:
ps aux | wc -wИтог
wc — простая и полезная утилита для быстрой проверки объёма текста: строк, слов, символов и байтов. Помните о различии между байтами и символами и используйте find вместо ls для безопасного подсчёта файлов. Для более сложной аналитики комбинируйте wc с awk, grep, sed и другими стандартными инструментами.
Сводка
- wc подходит для быстрых метрик текста и файлов
- Используйте -m для символов, -c для байтов
- Для подсчёта файлов предпочтительнее find | wc -l
- При необходимости сложной фильтрации применяйте awk/grep/uniq
Похожие материалы
Подгонка цвета в Adobe Premiere Pro — руководство
Исправить «Обнаружено перекрытие экрана» на Android
Как открыть режим «Инкогнито» в Google Chrome
Установка Docker Compose на Linux
Установка KDE Plasma в Linux Mint