The -Z flag will output the zero byte when used in combination with a flag that outputs the file name on a search match. Ok, what does that mean?
Let’s take a look at our test.txt file with the following content:
sad
happy
awake
coffee
work
schoolIf we wanted to list all the file names with the pattern “happy” in it, we would do the following:
$ grep -l "happy" *
test.txt
$Note the newline after test.txt and the location of the cursor.
Using the -Z flag will add a zero byte instead of a newline, putting the cursor directly after file name.
$ grep -lZ "happy" *
test.txt:happy$