# Random

Some useful things (to me, not necessarily to you) I keep having to redo because they get lost in spacetime. All credit goes to the brave souls at StackOverflow.

# Bash

## Compressing all pdfs in a folder (and subfolder)

In a recent version of the ghostscript (or gs for close friends), a script I have always used stopped working, so here’s what I’ve been doing. This works for Ubuntu (including the Linux subsystem version in Windows 11).

#!/bin/bash
for f in $(find . -name '*.pdf') do echo "Processing$f"
# Grab filename without extension (just whatever comes before the first .)
# might fail for other purposes, but works fine for .pdfs
fnoe="${f%.*}" # Backup original file. This will also automatically backup any existing # backups so it's mostly safe. mv$f ${fnoe}_bckup.pdf # Convert to .ps pdf2ps${fnoe}_bckup.pdf ${fnoe}.ps # Convert back to .pdf ps2pdf -dPDFSETTINGS=/printer${fnoe}.ps $f done  ## Replace file contents Did your e-mail change and how you have to search through all manifests to replace it with the new one? Fear not. You can replace string A with string B within all files, folders, and subfolders by using some regex magic, as follows. find . -type f -exec sed -i'' -e 's/A/B/g' {} +  ## Rename all files using New prefix for all the libraries you have? No worries. Based on this and this and this and maybe some others. Rename all folders and files by replacing substring A to B using regex magic. find . -type f -execdir rename 's/A/B/g' {} +  ## “Uninstalling” a cmake installed package CMake installations create a file install_manifest.txt with all the installed file locations. You can remove them all with. sudo xargs rm < install_manifest.txt  ## Running a command on a set of folders For instance, git pull is all subfolders. for d in */ ; do echo "Git pull in$d..."
cd "\$d"
git pull
cd ..
done