Today we came across a requirement to check all the files in a directory for a specific entry. The situation is like this. We have two public DNS servers, we usually take backups of zone files when ever we do some changes to zone files. So all the backups are there in one folder. My duty is to check in which file we have a particular change in our second DNS server. Here is the command which we used for grepping all the files at a time, instead of grepping/search file by file.
SEARCH IN FIRST LEVEL DIRECTORY
grep -n 'mx' /path/to/your/files/*
-n for numbering the lines in that files which contain mx.
Output:
sanne@192-168-1-103:~/code/sh > ls abc.64001 echooutput.txt postex.sh surendra.txt testecho.sh untitled_folder abc.txt gitsave.sh redir.sh test.txt testreg.sh whatisshell.sh sanne@192-168-1-103:~/code/sh > grep -n bash * gitsave.sh:1:#!/bin/bash postex.sh:1:#!/bin/bash redir.sh:1:#!/bin/bash testecho.sh:1:#!/bin/bash testreg.sh:1:#!/bin/bash whatisshell.sh:1:#!/bin/bash
The output contains
<filename>:<line number>:<line content>
With out -n option
sanne@192-168-1-103:~/code/sh > grep bash *
gitsave.sh:#!/bin/bash
postex.sh:#!/bin/bash
redir.sh:#!/bin/bash
testecho.sh:#!/bin/bash
testreg.sh:#!/bin/bash
or you can use -l to just list files where they contain mx word.
grep -l 'mx' /path/to/your/files/*
Output:
sanne@192-168-1-103:~/code/sh > grep -l bash * gitsave.sh postex.sh redir.sh testecho.sh testreg.sh whatisshell.sh
If you want to search within sub-directories as well you can use -r option
grep -rn 'mx' /path/to/your/files/*
0 comments:
Post a Comment