Linux find in all files the string

Содержание
  1. Linux find in all files the string
  2. Find string in file
  3. Find string in file ignoring cases
  4. Find string in current directory
  5. Find string recursively
  6. Find files that do not contain a string
  7. Find string recursively in only some specific files
  8. Find string recursively in all files except the ones that contain certain extensions
  9. Find string recursively all files including some extensions and excluding others
  10. Find string recursively in only some specific files and show their filename
  11. Find files and find a string in them using find
  12. Finding a File Containing a Particular Text String In Linux Server
  13. grep command syntax for finding a file containing a particular text string
  14. How to search and find all files for a given text string
  15. Task: Search all subdirectories recursively
  16. Task: Only display filenames
  17. Task: Suppress file names
  18. Task: Display only words
  19. Task: Search for two or more words
  20. Task: Hide warning spam
  21. Task: Display matched text in color
  22. Task: Ignore case
  23. How do I find all files containing specific text on Linux?
  24. Finding text strings within files using grep
  25. Linux / UNIX Recursively Search All Files For A String
  26. How to use grep command to recursively search All files for a String
  27. Following symtlinks
  28. Case sensitive recursive search
  29. Displaying files name when searching for a string/word
  30. Using find command to search recursively
  31. Finding all files containing specific text on Linux
  32. How to search only files that have specific extensions
  33. Understanding grep command options that used for searching text files
  34. Summing up
  35. How to Find a Specific String or Word in Files and Directories
  36. If You Appreciate What We Do Here On TecMint, You Should Consider:

Linux find in all files the string

The commands used are mainly grep and find.

Find string in file

grep string filename

grep name file.txt

Find string in file ignoring cases

grep string filename

grep -i name file.txt

Find string in current directory

grep string .

Find string recursively

grep -r string .

Find files that do not contain a string

grep -L string .

Find string recursively in only some specific files

grep string -r . —include=*.myextension

grep string -r . —include=*.

grep «name=Oscar» -r . —include=*.js

* if you specify —include it won’t look for the string in all files, just the ones included

Find string recursively in all files except the ones that contain certain extensions

grep string -r . —exclude=*.

grep «Serializable» -rl . —exclude=*.

Find string recursively all files including some extensions and excluding others

grep string -r . —include=*.myextension —exclude=*.myextension2

grep «my=string» -r . —include=*. —exclude=*.js

*It won’t look for the string in the js files.

Find string recursively in only some specific files and show their filename

grep string -rl . —include=*.myextension

grep «name=Oscar» -rl . —include=*.js

Find files and find a string in them using find

find . -name ‘*.extension’ -exec grep string +

find . -name ‘*.txt’ -exec grep Mytext <> +

find . -type f \( -name ‘*.htm’ -or -name ‘*.html’ \) -exec grep -i «mystring» <> +

Источник

Finding a File Containing a Particular Text String In Linux Server

Tutorial details
Difficulty level Easy
Root privileges No
Requirements grep
Est. reading time Less than 2 minutes

You need to use the grep command. The grep command or egrep command searches the given input FILEs for lines containing a match or a text string.

grep command syntax for finding a file containing a particular text string

The syntax is:
grep » text string to search » directory-path
grep [option] » text string to search » directory-path
grep -r » text string to search «directory-path
grep -r -H » text string to search » directory-path
egrep -R » word-1|word-2 » /path/to/directory
egrep -w -R » word-1|word-2 » directory-path
Let us see some common example on how to use grep to search for strings in files.

How to search and find all files for a given text string

In this example, search for a string called ‘redeem reward’ in all text (*.txt) files located in /home/tom/ directory, use:
$ grep «redeem reward» /home/tom/*.txt
OR
$ grep «redeem reward»

Task: Search all subdirectories recursively

You can search for a text string all files under each directory, recursively with -r option:
$ grep -r «redeem reward» /home/tom/
OR
$ grep -R «redeem reward» /home/tom/
Look for all files containing cacheRoot text on Linux:
grep -R cacheRoot /home/vivek/

Trying to find all files containing specific text on my Linux desktop

Task: Only display filenames

By default, the grep command prints the matching lines. You can pass -H option to print the filename for each match:
$ grep -H -r «redeem reward» /home/tom
Sample outputs:

To just display the filename use the cut command as follows:
$ grep -H -R vivek /etc/* | cut -d: -f1
Sample outputs:

Task: Suppress file names

The grep command shows output on a separate line, and it is preceded by the name of the file in which it was found in the case of multiple files. You can pass the -h option to suppress inclusion of the file names in the output:
$ grep -h -R ‘main()’

Task: Display only words

You can select only those lines containing matches that form whole words using the -w option. In this example, search for word ‘getMyData()’ only in

/projects/ dirctory:
$ grep -w -R ‘getMyData()’

Task: Search for two or more words

Use the egrep command as follows:
$ egrep -w -R ‘word1|word2’

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

Task: Hide warning spam

grep command generate error message as follows due to permission and other issues:

No such file or directory
No such device or address
Permission denied

To hide all errors or warning message spam generated by the grep command, append 2>/dev/null to grep command. This will send and hide unwanted output to /dev/null device:
$ grep -w -R ‘getMyData()’

Task: Display matched text in color

Pass the —color option to the grep command display matched text/words in color on the terminal:

Fig.01: grep command in action with colors and hiding the warnings on screen

Task: Ignore case

Our final example ignore case distinctions in both the search PATTERN and the input files:
grep -i -R ‘word’ /path/to/dir
grep -i -r ‘income tax’

How do I find all files containing specific text on Linux?

The syntax is:
egrep ‘pattern’ -rnw /path/to/dir/
egrep ‘word1|word2’ -rnw /home/vivek/backups/

Finding text strings within files using grep

In this example search for lines starting with any lowercase or uppercase letter:
grep «^[a-zA-Z]» -rns

  • -r – Recursive search
  • -R – Read all files under each directory, recursively. Follow all symbolic links, unlike -r grep option
  • -n – Display line number of each matched line
  • -s – Suppress error messages about nonexistent or unreadable files
  • -w – Only work on words i.e. search only those lines containing matches that form whole words
  • -l – Show the name of each input file when match found
  • -i – Ignore case while searching

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Источник

Linux / UNIX Recursively Search All Files For A String

H ow do I recursively search all text files for a string such as foo under UNIX / Linux / *BSD / Mac OS X shell prompt?

You can use grep command or find command as follows to search all files for a string or words recursively.

Tutorial details
Difficulty level Easy
Root privileges No
Requirements Linux or Unix with grep and find utilities
Est. reading time 2 minutes

The syntax is as follows for the grep command to find all files under Linux or Unix in the current directory:
cd /path/to/dir
grep -r «word» .
grep -r «string» .
The -r option read/sarch all files under each directory, recursively, following symbolic links only if they are on the command line. In other words, it will look into sub-directories too. We can also state path as follows:
grep -r ‘something’ /path/to/dir

The following syntax will read and search all files under each directory, recursively. Follow all symbolic links too by passing the -R (capital R ):
grep -R ‘word’ .
grep -R ‘string-to-search’ /path/to/dir/

To ignore case distinctions, try:
grep -ri «word» .

Displaying files name when searching for a string/word

To display print only the filenames with GNU grep, enter:
grep -r -l «foo» .
You can also specify directory name:
grep -r -l «foo» /path/to/dir/*.c

Using find command to search recursively

find command is recommend because of speed and ability to deal with filenames that contain spaces.

  • No ads and tracking
  • In-depth guides for developers and sysadmins at Opensourceflare✨
  • Join my Patreon to support independent content creators and start reading latest guides:
    • How to set up Redis sentinel cluster on Ubuntu or Debian Linux
    • How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
    • How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
    • A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
    • How to protect Linux against rogue USB devices using USBGuard

Join Patreon

Older UNIX version should use xargs to speed up things:
find /path/to/dir -type f | xargs grep -l «foo»
It is good idea to pass -print0 option to find command that it can deal with filenames that contain spaces or other metacharacters:
find /path/to/dir -type f -print0 | xargs -0 grep -l «foo»
OR use the following OSX/BSD/find or GNU/find example:

Sample outputs from the last command:

Fig.01: Unix and Linux: How to Grep Recursively?

Finding all files containing specific text on Linux

Say you want to find orange and mango words, then try:
grep -r -E ‘orange|mango’ .
grep -r -E ‘orange|mango’ /dir/to/search/
This is how you set up pattern
grep -r -e ‘pattern’ /dir/to/search
For extended grep (see egrep command for regular expressions):
egrep -r ‘word’ /dir/to/search/
egrep -r ‘regex’ /dir/to/search/
We can combine all options too:
grep -rnw -e ‘pattern’ /dir/to/search/
egrep -rnw ‘regex’ /path/to/search/

How to search only files that have specific extensions

Want to search files having either ‘.pl’ or ‘.php’ extensions for foo() ? Try:
grep —include=\*. -rnw «foo()» /dir/to/search/
egrep —include=\*. -rnw «regex» /dir/to/search/
We can skip any command-line file with a name suffix that matches the pattern GLOB, using wildcard matching. For instance, exclude all .bin files:
grep —exclude=\*.bin -r -n -0 ‘string_to_search’ /path/
egrep —exclude=\*.bin -r -n -0 ‘regex’ /path/to/search/
When searching recursively, we can skip any subdirectory whose base name matches wildcard. For instance, skip includes and docs directory:

Understanding grep command options that used for searching text files

  • -r : Rrecursive search
  • -i : Ignore case distinctions in patterns and data
  • -w : Match only whole words
  • -n : Show line number with output lines
  • -e ‘pattern’ : Use PATTERNS for matching
  • -E : All search PATTERNS are extended regular expressions
  • —include=GLOB : Search only files that match GLOB (a file pattern)
  • —exclude=GLOB : Skip files that match GLOB
  • —exclude-dir=GLOB : Skip directories that match GLOB

GLOB means to expand to wildcard patterns. For example, GLOB, *.txt means all files ending with .txt extension. A string is a wildcard pattern if it contains one of the following characters:

  1. ? – Matches any single character.
  2. * – Matches any string, including the empty string.
  3. [

Globbing is the operation that expands a wildcard pattern into the list of path-names matching the pattern.

Summing up

You learned how to search for text, string, or words recursively on Linux, macOS, *BSD, and Unix-like systems. See the following man pages:
man grep
man find
man 3 glob
man 7 glob

🐧 Get the latest tutorials on Linux, Open Source & DevOps via

Источник

How to Find a Specific String or Word in Files and Directories

Do you want to find all files that contain a particular word or string of text on your entire Linux system or a given directory. This article will guide you on how to do that, you will learn how to recursively dig through directories to find and list all files that contain a given string of text.

A simple way to work this out is by using grep pattern searching tool, is a powerful, efficient, reliable and most popular command-line utility for finding patterns and words from files or directories on Unix-like systems.

The command below will list all files containing a line with the text “check_root”, by recursively and aggressively searching the

Find a Word in Directory

Where the -R option tells grep to read all files under each directory, recursively, following symbolic links only if they are on the command line and option -w instructs it to select only those lines containing matches that form whole words, and -e is used to specify the string (pattern) to be searched.

You should use the sudo command when searching certain directories or files that require root permissions (unless you are managing your system with the root account).

To ignore case distinctions employ the -i option as shown:

If you want to know the exact line where the string of text exist, include the -n option.

Find String with Line Number

Assuming there are several types of files in a directory you wish to search in, you can also specify the type of files to be searched for instance, by their extension using the —include option.

This example instructs grep to only look through all .sh files.

In addition, it is possible to search for more than one pattern, using the following command.

Find Multiple Words in Files

That’s It! If you know any other command-line trick to find string or word in files, do share with us or ask any questions regarding this topic, use the comment form below.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

We are thankful for your never ending support.

Источник

Читайте также:  Нет подключения принтера windows 10
Оцените статью