On Thu, Nov 18, 2021 at 07:26:51AM +0100, Michael J. Baars wrote:
> So now we have a relation for 'older than' and for 'newer than', but how 
> about 'oldest' (executable), and 'newest' (executable)?

https://mywiki.wooledge.org/BashFAQ/099

The bot in libera's #bash also has this factoid for it:

Find the latest modified file in a directory: latest() { local file latest; for 
file in "${1:-.}"/*; do [[ $file -nt $latest ]] && latest=$file; done; printf 
'%s\n' "$latest"; } ## Usage: latest [dir]

> I could only come up with this:
> 
> unset y; for x in $(find bin -mindepth 1 -name "*"); do if [[ ${x} -nt ${y} 
> ]]; then y=${x}; fi; done; echo newest: ${y};

That $(find) construct won't work for files with whitespace in their
names.  See <https://mywiki.wooledge.org/BashPitfalls#pf1>.  The -name "*"
bit is also kind of silly.

Apart from that, the basic premise (loop over all the files) is correct.

Reply via email to