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.
You should follow me on twitter here or grab rss feed to keep track of new changes.
Featured Articles:
- 30 Handy Bash Shell Aliases For Linux / Unix / Mac OS X
- Top 30 Nmap Command Examples For Sys/Network Admins
- 25 PHP Security Best Practices For Sys Admins
- 20 Linux System Monitoring Tools Every SysAdmin Should Know
- 20 Linux Server Hardening Security Tips
- Linux: 20 Iptables Examples For New SysAdmins
- Top 20 OpenSSH Server Best Security Practices
- Top 20 Nginx WebServer Best Security Practices
- 20 Examples: Make Sure Unix / Linux Configuration Files Are Free From Syntax Errors
- 15 Greatest Open Source Terminal Applications Of 2012

- My 10 UNIX Command Line Mistakes
- Top 10 Open Source Web-Based Project Management Software
- Top 5 Email Client For Linux, Mac OS X, and Windows Users
- The Novice Guide To Buying A Linux Laptop












{ 2 comments… read them below or add one }
This website is Really good for Linux Beginners as well as Professionals
This really good but I need help.
I have written a backup script as follows
echo "Taking Domain Backup..." hostname echo "Tarring intellectprod" sleep 2 cd /usr/weblogic/bea/user_projects/domains tar -cvf intellectprod_`date "+%d%b%Y"`.tar intellectprod echo "Zipping intellectprod" sleep 2 gzip intellectprod_`date "+%d%b%Y"`.tar echo "Moving intellectprod_date.tar.gz to Backup folder" sleep 2 mv intellectprod_`date "+%d%b%Y"`.tar.gz /usr/weblogic/Backupwhat I want to do now is to reverse the process in case there is a disaster.
i want to be able to identfy the most current folder and use for restore.
can you help?