
Date: February 11, 2000
The find / -mtime -nn -ls command can be used to identify files that have changed within the past "nn" days. However, it often useful to locate files that have changed in the past 24 hours. Here's a trick to identify these files. The trick involves creating an empty file with a time stamp that is at the end of the desired time frame, then using the find command's "-newer" flag to locate the files.
touch -t mmddhhmm touched_file
find /
Where:
This trick is useful for finding log files with new entries, or files that are filling up a directory. Other useful find options include "-size =nn" for identifying files larger than nn blocks, "-user" for locating file by user, and "-type" by type of file. See the AIX man pages for more information.
The following Korn shell script illustrates the use of these commands.
#!/usr/bin/ksh
# Purpose: identify files starting in the current directory
# that have changed *today* within the past nn hours
# You'll have to modify this script to work around midnight
# Bruce Spencer, IBM 2/11/00
USAGE="Usage: $0 n \t\t\t# where n= 1-24 hours"
# check for syntax errors
if [[ $# -ne 1 ]] then
echo $USAGE
exit 1
fi
if [[ $1 -gt 24 ]] then
echo $USAGE
exit 1
fi
HH=$(date +%H)
if [[ $1 -gt $HH ]] then
echo "Error: The requested time span $1 is greater than current time $HH"
exit 1
fi
# Passed checks
let hh=HH-$1
if [[ $hh -lt 10 ]] then
#hours must be two digits
timestamp="$(date +%m%d)0${hh}00"
else
timestamp="$(date +%m%d)${hh}00"
fi
# Create a "touch file" in /tmp to avoid write permissions problem
touch_file="/tmp/${LOGNAME}junk"
touch -t $timestamp $touch_file
find . -xdev -type file -newer $touch_file -ls
rm $touch_file