Ahmed FASIH is a user on octodon.social. You can follow them or interact with them if you have an account anywhere in the fediverse. If you don't, you can sign up here.

If you are doing something to a bunch of files, perhaps a shell script like:

for i in *jpg; do something $i somethingelse; done

and want a simple way to parallelize this, try xargs, which I love:

ls *jpg | xargs -n1 -P5 -I% something % somethingelse

will run on five files at a time. I've used this trick two or three times today in re-synchronizing photos from two phones and a camera and an SD card and Dropbox.

Ahmed FASIH @22

It's a tad bit more involved when the filenames have spaces: one trick is to replace the newline with the null character using tr and tell xargs to expect null-terminated rows—it then ignores spaces, etc. A real example:

cat bad.txt | tr '\n' '\0' | xargs -0 -P8 -n1 -I% dropbox_uploader.sh delete "/Camera Uploads/%"

I have a list of bad filenames in bad.txt, and the superb Dropbox-Uploader github.com/andreafabrizi/Dropb will delete them eight at a time.