August 13, 2021 at 10:26 PM by Dr. Drang
Things were busy at work at the end of July, and I didn’t get my invoices sent out. No problem, I thought, the first week of August will be fine. I had forgotten that I’d be traveling most of the first week of August, and travel usually means I’m extra busy the days before a trip.
So the bills had to go out this week, which was also fine—albeit less fine—but I had another problem. During the busy July—and going back into a kind of busy June—I had stopped updating my todo lists in Things. So I didn’t have a list of the projects that needed to be billed out. This meant trusting my memory, always fraught with peril, or…
find. I opened an iTerm window,
cd’d into my
~/projects directory, and issued this command:
find . -name *report*.pdf -mtime -60
A few seconds later, I had a list of file paths to the reports I’d written in the couple of months. It looked sort of like this:
./projectA/results/structural-report.pdf ./projectB/tower1/results/glass-report.pdf ./projectB/tower1/results/concrete-report.pdf ./projectC/results/foundation-report.pdf [etc]
Because I always put the word “report” in the names of my reports, and they’re always PDF files, I knew that the first expression in my
would do the trick. The asterisks work just as you’d expect: they’re a wildcard globbing pattern. The second expression,
restricted the results to files that were last modified (that’s what the m means) less than 60 days age. There are two parts of the
-mtime expression that I find tricky:
- That the
-mtimeargument is given in days. There’s a similar expression
-mmin, which works just like
-mtime, but its argument is given in minutes—the units are built into the name. For consistency, I wish
- That the argument to
-mtimeneeds a minus sign to mean “less than.” I tend to write
-mtime 60, which finds only files that were modified exactly 60 days ago. Then when I get no results, I grit my teeth and rerun the command with the minus sign added.
Anyway, despite my quarrels with
-mtime, I got the information I needed. Once I knew which projects I’d written a recent report on, I could check whether they’d been billed out. A couple had been, but most had not. That has since been fixed and a fiscal crisis averted.
A better solution to getting my invoices out on time would be to hop back on the Things wagon. That would better than dusting off my
find skills again in September.