+# Most-recently modified file system objects
+recent() {
+ # NOTES:
+ # - intentionally not quoting the parameters, so that some can be ignored
+ # if not passed, rather than be passed to find as an empty string;
+ # - %T+ is a GNU extension;
+ # - gawk is able to split records on \0, while awk cannot.
+ find $@ -printf '%T@ %T+ %p\0' \
+ | tee >(gawk -v RS='\0' 'END { printf("[INFO] Total found: %d\n", NR); }') \
+ | sort -z -k 1 -n -r \
+ | head -n "$(stty size | awk 'NR == 1 {print $1 - 5}')" -z \
+ | gawk -v RS='\0' '
+ {
+ sub("^" $1 " +", "") # Remove epoch time
+ sub("+", " ") # Blank-out the default separator
+ sub("\\.[0-9]+", "") # Remove fractional seconds
+ print
+ }'
+}
+
+recent_dirs() {
+ recent "$1" -type d
+}
+
+recent_files() {
+ recent "$1" -type f
+}
+