My current work involves a lot of reading, and I receive a ton of files from many sources — colleagues, contractors, vendors, document systems, et al. The fact that I have instead tried listening to them in dull monotone1 must be a give away. Last Sunday, I sat down to list all the minor house-keeping annoyances that stop me in my tracks while working, so I could do something about them.
Here are the top five:
- Split and scattered pdf files in a folder
- Empty folders
- File and folder permissions
- Scattered LaTeX compile files
- pdf file sizes
I realised that I had solved these problems at one time or the other in the past, but hadn’t joined them up into a single tool belt that I could access with a simple command in one stroke. I realised I could create a
Makefile that could make it all possible.
My hkp repository is a result of that. The tool-belt is now accessible from any folder at my finger tips. Here are the available tools:
ckunte at air in ~/hkp (master) $ hk usage: make --file=~/hkp/Makefile <cmd> <cmd> available: cmbi combine all pdf files in the curr folder cmbs combine sub-folder-wise pdf files efd purge empty folders ffp apply permissions: folders (755), files (644) plcf purge LaTeX compile files cmpr compress all pdf files in the curr folder cr delete and recreate master git repository
Among the above, combining files proved troublesome, especially with all kinds of poorly named files. For a while I tried
rename, which proved to be dangerous. After a bit of research, I found detox, which does a great job of renaming bad names into sane, parsable ones that the script can handle. While it was easier to install on the Mac via Homebrew (
brew) and via Advanced Package Tool (
apt) on debian, a Cygwin version proved elusive. In the end, I compiled source (on Cygwin!) to get a working binary in
/usr/local/bin. detox’s kung fu is a thing to admire. When you’re not writing regular expressions — to catch a bunch of poorly named files and failing often, it feels like magic.
New CLI tools
I’ve been discovering new tools, written by Rust programmers, with dramatic improvements in utility and speed.
- bat: A cat(1) clone with wings
- exa: A modern version of
- fd: A simple, fast and user-friendly alternative to
- fzf: A command-line fuzzy finder
- rg: A fast alternative to grep
- rga: Search in PDFs, E-Books, Office documents, zip, tar.gz, etc.
The combination of ripgrep (rg) with fzf in live-searching (via) through my files cannot beat anything in Mac or Windows. Happy days!
rg --files | fzf
Via text to speech. ↩