Find contents or string in current or subfolder files using grep and its option
Environment and Prerequisite
- Linux base system
- Bash shell(/bin/bash)
grep command
What is grep?
grep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
grep
: Print lines matching a pattern. It can be used with other commands and various options.
Find contents in all subfolder files using r and n option
Usage
- Use below command in folder or directory where you want to find
grep -rn [PATTERN]
Basic example
-r
: Find all subdirectory files recursively-n
: Print matching string with line number
$ grep -rn "abc def hij"
test/test_ascii.txt:2:abc def hij
Find many of patterns
-e
: You can find more than one pattern => OR
$ grep -rn -e "send" -e "test"
.gitignore:41:# Unit test / coverage reports
.gitignore:47:nosetests.xml
.gitignore:51:.pytest_cache/
smc_on_in_text:13:0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
smc_on_in_text:14:50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
...
Exclude specific pattern
-v
: Exclude specific pattern
$ grep -rn -e "send" -e "test" | grep -v ".gitignore"
smc_on_in_text:13:0 10 17 * * python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
smc_on_in_text:14:50 10 * * 3 python /home/twpower/MailReminder/reminder.py >> /home/twpower/test.txt
reminder.py:6:def sendMail(sender_email, receiver_email, app_password ,msg):
reminder.py:9: smtp.login(sender_email, app_password)
...
Give specific directory
- You can give specific directories as arguments.
$ grep -rn -e "def sednMail" -e "with open" MailReminder ./test/neutron
MailReminder/reminder.py:19:with open('/home/twpower/MailReminder/account.json') as account_json_file:
./test/neutron/doc/source/contributor/internals/quality_of_service.rst:349:combination with openflow rules.
...