#!/bin/bash -eu
# recent-date: show modified files for a given date

usage() {
    echo "recent-date: show recently modified files for a given date"
    echo "usage: recent-date [days|date]"
    echo " e.g.: recent-date 1"
    echo "       recent-date 2023-01-01"
    echo "       recent-date '1 week ago'"
}


arg="$*"

if [ -z "$arg" ]; then
    usage
    exit 1
fi

if [ "$arg" = "-h" -or "$arg" = "--help" ]; then
    usage
    exit 0
fi

# arg is a date specifier,
# or if arg is just an integer, assume it's a number of days ago
if [[ "$arg" =~ ^[0-9]+$ ]]; then
    arg="$* days ago"
fi

# what date is $arg?
date=$(date +%F -d "$arg")

# how may days ago is $date?
days_ago=$(( ($(date +%s -d 0) - $(date +%s -d "$date")) / 86400 ))

# show recent files for that date
recent $(( days_ago + 1 )) |
# grep -e "^$date" -e '^$' |

# remove blank lines at the start and end of the file
perl -e '
    $/ = undef;
    $_ = <>;
    s/^\n+//;
    s/\n+$/\n/;
    print $_;
' |

less
