Files
q-tools/files/file-age
2017-06-09 09:52:05 +03:00

52 lines
999 B
Bash
Executable File

#!/bin/bash
_help() {
echo '
Usage: file-age {file} [units]
Checks file modification date, and the current time. Prints the age of
the file in [units].
[units] is one of S,M,H,d,w,m,y
seconds is the default. All values floored.
month = 30 days
year = 365 days
'
exit
}
for (( i=1; i<=$#; i++ ))
do [[ "${!i}" = "-h" ]] && _help
done
STATFILE="$1"
[[ -z "$STATFILE" ]] && _help
test -e "$STATFILE" || { echo File "$STATFILE" does not exist >&2; exit 1; }
UNITS=${2:-S}
case $OSTYPE in
darwin*) created=$( stat -f %c -t %s "$STATFILE" ) ;;
linux*) created=$( stat -c %Y "$STATFILE" ) ;;
esac
now=$( date +%s )
age=$(( $now - $created ))
case $UNITS in
S)
echo $age;;
M)
echo $(( $age / 60 ));;
H)
echo $(( $age / 3600 ));;
d)
echo $(( $age / 86400 ));;
w)
echo $(( $age / 604800 ));;
m)
echo $(( $age / 2592000 ));;
y)
echo $(( $age / 31536000 ));;
*)
echo Unit $UNITS not recognized.
_help;;
esac