

Specifying “Zebra” will match “zebra”, “ZEbrA” or any other combination of upper and lower case letters for that string. To ignore case when searching, invoke grep with the -i option (or -ignore-case).įor example, when searching for Zebra without any option, the following command will not show any output i.e there are matching lines: grep Zebra /usr/share/wordsīut if you perform a case insensitive search using the -i option, it will match both upper and lower case letters: grep -i Zebra /usr/share/words This means that the uppercase and lowercase characters are treated as distinct. The -l option is usually used in combination with the recursive option -R: grep -Rl /tmp Case Insensitive Search #īy default, grep is case sensitive. The output will look something like this: nf conf in the current working directoryĪnd prints only the names of the files containing the string : grep -l *.conf The command below searches through all files ending with. To suppress the default grep output and print only the names of files containing the matched pattern, use the -l ( or -files-with-matches) option. etc/nginx/sites-available/: server_name /etc/nginx/sites-enabled/: server_name Show Only the Filename # That line is not printed when grep is invoked with -rbecause files inside the Nginx’s sites-enabled directory are symlinks to configuration files inside the sites-available directory. Notice the last line of the output below.

etc/nginx/sites-available/: server_name If you use the -R option, grep will follow all symbolic links: grep -R /etc

#Find file linux recursive full#
The output will include matching lines prefixed by the full path to the file:
#Find file linux recursive how to#
Here is an example showing how to search for the string in all files inside the /etc directory: grep -r /etc , instead of -r, use the -R option (or -dereference-recursive). When this option is used grep will search through all files in the specified directory, skipping the symlinks that are encountered recursively. To recursively search for a pattern, invoke grep with the -r option (or -recursive). If you don’t want that line to be shown pass the output to another grep instance as shown below. As you can see in the output above there is also a line containing the grep process. You can also chain multiple pipes in on command. Using Grep to Filter the Output of a Command #Ī command’s output can be filtered with grep through piping, and only the lines matching a given pattern will be printed on the terminal.įor example, to find out which processes are running on your system as user www-data you can use the following psĬommand: ps -ef | grep www-data www-data 18247 12675 4 16:00 ? 00:00:00 php-fpm: pool www To display the lines that do not match a pattern, use the -v ( or -invert-match) option.įor example, to print the lines that do not contain the string nologin you would use: grep -v nologin /etc/passwd root:x:0:0:root:/root:/bin/bashĬolord:x:124:124::/var/lib/colord:/bin/false If the string includes spaces, you need to enclose it in single or double quotation marks: grep "Gnome Display Manager" /etc/passwd Invert Match (Exclude) # The output should look something like this: root:x:0:0:root:/root:/bin/bash The most basic usage of the grep command is to search for a string (text) in a file.įor example, to display all the lines containing the string bash from the /etc/passwdįile, you would run the following command: grep bash /etc/passwd To be able to search the file, the user running the command must have read access to the file. The items in square brackets are optional.
