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