You can use find or the bash/ksh '-nt' and '-ot' operators.
With
find :
Code:
#
# Find files between two dates
#
Usage() {
if [ -n "$1" ]; then
echo "$*"
echo ""
fi
echo "Usage: $(basename $0) from_date [to_date]"
echo " from_date : YYYY/MM/DD"
echo " to_date : YYYY/MM/DD (Def=from_date)"
echo ""
echo "List files between from_date 00:00.01 "
echo "and to_date 23:59.59"
exit 1
}
[ $# -eq 0 -o $# -gt 2 ] && Usage "Invalid argument count"
[ $# -eq 1 ] && set "$1" "$1"
Fdate="$(echo "$1" | tr -d '/')0000.00"
Tdate="$(echo "$2" | tr -d '/')2359.59"
[ ${#Fdate} -ne 15 ] && Usage "Invalid 'from_date'"
[ ${#Tdate} -ne 15 ] && Usage "Invalid 'to_date'"
Ffile=/tmp/from.$$
Tfile=/tmp/to.$$
touch -t $Fdate $Ffile
touch -t $Tdate $Tfile
find . -type f -newer $Ffile ! -newer $Tfile -ls
rm -f $Ffile $Tfile
With
-nt and
-nt operators :
Code:
#
# Find files between two dates
#
Usage() {
if [ -n "$1" ]; then
echo "$*"
echo ""
fi
echo "Usage: $(basename $0) from_date [to_date]"
echo " from_date : YYYY/MM/DD"
echo " to_date : YYYY/MM/DD (Def=from_date)"
echo ""
echo "List files between from_date 00:00.00 "
echo "and to_date 23:59.59"
exit 1
}
[ $# -eq 0 -o $# -gt 2 ] && Usage "Invalid argument count"
[ $# -eq 1 ] && set "$1" "$1"
Fdate="$(echo "$1" | tr -d '/')0000.00"
Tdate="$(echo "$2" | tr -d '/')2359.59"
[ ${#Fdate} -ne 15 ] && Usage "Invalid 'from_date'"
[ ${#Tdate} -ne 15 ] && Usage "Invalid 'to_date'"
Ffile=/tmp/from.$$
Tfile=/tmp/to.$$
touch -t $Fdate $Ffile
touch -t $Tdate $Tfile
for file in $(ls -t)
do
[ "$file" -ot $Ffile ] && break
[ "$file" -nt $Tfile ] && continue
ls -ld $file
done
rm -f $Ffile $Tfile