How to Count the Number of lines, Words, and, Characters in a Text File from Terminal?

word count in termimal
word count in termimal

How can we get the number of lines or number of words in a file? The most easiest way to count the number of lines, words, and characters in text file is to use the Linux command “wc” in terminal.

The command “wc” basically means “word count” and with different optional parameters one can use it to count the number of lines, words, and characters in a text file.

To count the number of lines, use “wc” with “l” as

wc -l yourTextFile

To count the number of words, use “wc” with “w” option as

wc -w yourTextFile

And to count the total number of characters, use “wc” with “c” as

wc -m yourTextFile

Using wc with no options will get you the counts of bytes, lines, and words (-c, -l and -w option).

>wc file1.txt 
 1065    5343   40559 file1.txt

Count words, characters, and lines in multiple files

wc command can take multiple files at the same time and give you the number of words, characters, and lines. To get counts from multiple files, you simply name the files with space between them. Also it will get you the total counts. For example, to count the number of characters (-m), words (w) and lines (-l) in each of the files file1.txt and file2.txt and the totals for both, we would simply use

>wc -mlw file1.txt file2.txt

We would get the results in a nice tabular form

1065    5343   40454 file1.txt
 296    1075   11745 file2.txt
1361    6418   52199 total

How to Count a Certain Type of Files in a Directory?

One can also cleverly use the “wc” command on terminal and find the number of files (or files of certain type) in a directory. For example, to find the number of pdf files in a directory

ls -l *.pdf | wc -l

And remember that the first line of “ls -l” statement is a description. Therefore, the total number of pdf files is one less than the result of “ls -l *.pdf | wc -l“.

We just saw an example of using pipe operator “|” to count files. Here we fed the output of command “ls -l *.pdf” to “wc”. Or ability to piping (or chaining) multiple commands is a hallmark of Linux. We can do the same to numerous scenarios. For example, if we want to count all users who have currently logged on, we can do

who | wc -l

How to get the number of lines matching a pattern in a file?

If you want to count the number of lines matching a string pattern in a text file, the “grep” command with the option “-c’ comes in really handy.

less my_text_file.txt | grep -c "pattern"

or we can directly apply “grep” on the file like

grep -c "pattern" my_text_file.txt