С чего начать Первые шаги трек · 15 ступеней
Linux Labs

wc — посчитать строки, слова и байты

4 мин Ubuntu 24.04 · GNU coreutils 9.4

Команда wc считает строки (-l), слова (-w), байты (-c) и символы (-m) в файле или в выводе другой команды.

Шпаргалка

7 команд Версия для печати
  • wc file.txt строки, слова, байты и имя
  • wc -l file.txt только строки: «2 file.txt»
  • wc -l < file.txt только число: «2»
  • grep error app.log | wc -l сколько строк с error
  • wc -l *.log по каждому файлу и total
  • find /etc -name '*.conf' | wc -l сколько файлов нашлось
  • wc -m text.txt символы, а не байты

Обзор

wc (word count) печатает три числа: строки, слова и байты. Слово — кусок текста между пробелами, табуляциями и переводами строк. Ключи -l, -w, -c оставляют только нужное число:

text
student@ubuntu:~$ printf 'one two\nthree\n' > words.txt
student@ubuntu:~$ wc words.txt
 2  3 14 words.txt
student@ubuntu:~$ wc -l words.txt
2 words.txt
student@ubuntu:~$ wc -l < words.txt
2

Строкой wc считает каждый символ перевода строки. Когда имя дано аргументом, wc печатает его рядом с числом. Когда текст пришёл на ввод — через < или конвейер, — имени нет, остаётся одно число. Его удобно подставлять в скрипт или сравнивать.

Ключи

5

Ключи можно сочетать: wc -lw печатает строки и слова. Полный список — man wc.

Ключ Что делает Пример
-l --lines Сколько строк (переводов строки). wc -l app.log
-w --words Сколько слов, разделённых пробелами и переводами строк. wc -w notes.txt
-c --bytes Сколько байт. wc -c image.png
-m --chars Сколько символов по локали; в UTF-8 кириллица — один символ на букву. wc -m text.txt
-L --max-line-length Ширина самой длинной строки. wc -L config.yaml

Ничего не найдено. Попробуй запрос короче.

Рецепты

5

Сколько строк с ошибкой

bash
grep -i error /var/log/app.log | wc -l
grep -ci error /var/log/app.log      # то же одной командой

Сколько файлов в каталоге

bash
find /var/log -maxdepth 1 -type f | wc -l

ls | wc -l тоже считает, но не видит скрытые файлы, а ls -l | wc -l добавит строку total.

Сколько разных значений

bash
cut -d: -f7 /etc/passwd | sort -u | wc -l    # сколько разных оболочек

Размер нескольких файлов сразу

bash
wc -l /etc/passwd /etc/group      # по строке на файл и строка total

Самая длинная строка

bash
wc -L config.yaml     # ширина самой длинной строки

Неполадки

5

wc -l показывает на одну строку меньше

wc считает переводы строки. Если последняя строка файла без \n, её не посчитают: printf 'a\nb' | wc -l печатает 1.

В выводе лишнее имя файла

Имя печатается, когда файл передан аргументом. Подай файл на ввод: wc -l < file.txt.

wc -c и wc -m дают разные числа

-c считает байты, -m — символы по локали. В UTF-8 русская буква — один символ и два байта: у привет с переводом строки -c даёт 13, -m — 7.

ls | wc -l считает не то число файлов

ls без -A пропускает скрытые файлы, ls -l добавляет строку total. Считай через find … | wc -l.

wc: x: Is a directory

wc читает файлы, а не каталоги. Сколько в каталоге файлов — через find: find x -type f | wc -l.

См. также

  • grep — отобрать строки перед подсчётом; grep -c считает сам.
  • sort и uniq — убрать повторы, чтобы считать разные значения.
  • find — найти файлы, которые потом считаешь.
  • redirection — ввод из файла < и конвейер |.
  • text-tools — tr, paste, column и другие звенья конвейера.
Загрузка…