whatupdave whatupdave - 1 month ago 5
Linux Question

Find all files recursively newer than given time

Given a time_t:

⚡ date -ur 1312603983
Sat 6 Aug 2011 04:13:03 UTC


I'm looking for a bash one-liner that lists all files newer. The comparison should take the timezone into account.

Something like

find . --newer 1312603983


But with a time_t instead of a file

Answer

This is a bit circuitous because touch doesn't take a raw time_t value, but it should do the job pretty safely in a script. (The -r option to date is present in MacOS X; I've not double-checked GNU.) The 'time' variable could be avoided by writing the command substitution directly in the touch command line.

time=$(date -r 1312603983 '+%Y%m%d%H%M.%S')
marker=/tmp/marker.$$
trap "rm -f $marker; exit 1" 0 1 2 3 13 15
touch -t $time $marker
find . -type f -newer $marker
rm -f $marker
trap 0
Comments