Tuesday, December 28, 2021

[SOLVED] Recursively find all files newer than a given time

Issue

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.


Solution

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


Answered By - Jonathan Leffler