52 lines
994 B
Bash
Executable File
52 lines
994 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" ) ;;
|
|
*) 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
|