Shell script to open files based on date

I am responsible for couple of *nix servers including Linux, Solaris and HP-UX system. Some time I just wanna find out and open files based upon given date i.e. open file based on date criteria. For example find out all *.pl files accessed on 12-Dec-2004. Since there is not ready to use command exists I wrote script. You can use this script or alias to automate this procedure. You can find out file access date using ls -l command or using stat (display file or filesystem status including access date or time) command. Here is simple logic:

$ ls -l /path/to/file | awk '{ print $6 }'

2006-11-22

Once file access date obtained, you can easily compare it using IF command in a shell script. Here is my small script:

#!/bin/bash
DATE="$1"
FILE="$2"
FDATE=$(ls -l $FILE | awk '{ print $6 }')
if [ "$DATE" == "$FDATE" ];then
vi $FILE
fi

You can run or use script as follows:

$ ./script.sh 2006-11-22 myfile.txt

File myfile.txt will be only open using vi text editor, if last access date was 2006-11-22. Above script works but if you want to handle multiple files then you need to modify script as follows:

#!/bin/bash
#date to match
DATE="$1"
# file, it can be wild cards too
FILE="$2"
# List of file to edit
# You can use $FLIST for other purpose too
FLIST=""
for f in $FILE
do
FDATE=$(ls -l $f | awk '{ print $6 }')
if [ "$DATE" == "$FDATE" ];then
FLIST="$FLIST $f"
fi
done

# just display list of files and let the use do
# whatever they wanna do with files
[ "$FLIST" != "" ] && echo $FLIST || echo "Sorry no files found to match $DATE date."

# Uncomment following if you wanna open all files using vi
#vi $FLIST

You can run script as follows:

$ ./script.sh "2004-12-31" "*.pl"

getip.pl reboot.pl dnsupdate.pl

Above script use for loop in shell script to match file one by one, if file date is matched it start to append file names to $FLIST variable. At the end, script displays all matched files. You can also use find command, but I prefer above script as it exactly matches date.

Want to read Linux tips and tricks, but don't have time to check our blog everyday? Subscribe to our daily email newsletter to make sure you don't miss a single tip/tricks. Subscribe to our weekly newsletter here!

{ 1 comment… read it below or add one }

1 Ravi 08.28.07 at 3:03 pm

This website is Really good for Linux Beginners as well as Professionals

Leave a Comment

You can use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Previous post: How BASH Shell Command Search Sequence Works

Next post: Linux Shell Script to reboot DSL or ADSL router