Skip to main content

Use Linux Grep in Bash Script



Grep is a useful command in Linux to filter desired strings or values or to match string pattern.

Type: "man Grep" on Linux terminal window to dig more about Grep command.

Script below is a simple way on how Grep can be used on a script.

Script also shows and performs basic calculation to get desired number of days.

Ls command in Linux is to list directory contents.

If dealing with a large or huge data, Ls alone can't be a handy tool.

So "Ls" command combined with "Grep" can be a good handy tool.

For more complex scenario "RegEx" will come into play, but "RegEx" will be too much for a newbie.

So mileage may vary using "RegEx".

So it's better to start with Grep and get a hang of it and move to "RegEx" to gain more.

Script below, will list files on a directory.

All files on a directory which has a time stamp of yesterday's date from the current date.

xMinus variable can be adjusted or set, so if it is set to "2". It will list files which has a time stamp 2 days earlier from current date.


Here's the simple bash script:

================================
#!/bin/sh

getDate="$(date +"%d")"

getMonth="$(date +"%b")"

#Will display the date and month; result of above commands

echo $getDate

echo $getMonth

xMinus=1

# $((calculation variables)) surround the arithmetic operation with $((calculate here))

# 10# tell bash to treat the variable as numeric

# since value of xMinus is set to 1 will get yesterday's date from today's date

$xbackupDate=$((10#$getDate-10#$xMinus))

if [ "$getDate" -le "9" ]; then

#space is the trick here

#Linux will have single space in between Month and Day if the date is less than 9

xDgrep="$getMonth  $xbackupDate"

elif [ "$getDate" -ge "10" ]; then

#Linux will have two spaces in between Month and Day if the date is greater than 9

xDgrep="$getMonth $xbackupDate"

fi

for f in $(ls -l /home/mybackupFiles/NASBak | grep "$xDgrep" )

do

# redirect read files

echo $f >> "xFiles.txt"

# or do a cp command to copy files or whatever process desired

done



To dig more about Linux "Grep", this one is a great site:
http://www.cyberciti.biz/faq/howto-use-grep-command-in-linux-unix/


Cheers till next time!!

Comments