Hacks
Image renaming by create date
When you have a bunch of files from your old Android phone with a timestamp filename (e.g. 1388042328550.jpg), you can rename them thus:
for f in 1*.jpg; do mv $f $(date +IMG_%Y%m%d_%H%M%S.jpg -d @$(echo $f|cut -c 1-10)) done
Otherwise, we can fish out the Create Date from the EXIF data, using exiftool:
exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e .
Repair broken or rotated phone videos
You can fix broken video .tmp files from your Android phone using untrunc. This will create a fixed.mp4 file in cwd:
untrunc working_video_from_the_same_camera.mp4 broken.mk4.tmp
Did your phone unhelpfully rotate your video? Fix the metadata:
ffmpeg -i original.mp4 -acodec copy -vcodec copy -metadata:s:v:0 rotate=0 unrotated.mp4
Or, did you actually film your shit the wrong way up? You'll need to re-encode it:
ffmpeg -i original.mp4 -acodec copy -vcodec libx264 -crf 20 -metadata:s:v:0 rotate=0 unrotated.mp4
Export your photos
Before uploading your photos, remove all the EXIF tags, and reduce the resolution; nobody needs 5000x4000 pixels, much less corporations hoovering up your stuff to put in adverts.
mkdir tmp for f in $.jpg; do convert -resize 1600x1200 $f tmp/$f exiftool -all= -P -overwrite_original tmp/$f done
Clean out your revoked and expired PGP keys
Spring-clean your gpg database, make it go faster. Just go:
gpg --delete-keys `gpg --list-keys|grep -P 'revoked|expired'|awk -F/ '{print $2}'|awk '{print $1}'`
Obviously. If you can't be arsed confirming each key, add --batch --yes to the first gpg call.
Firefox opening your shit in gedit
I don't know, who thought that was a good idea? Jesus.
sed -i 's#.*octet-stream.*#application/octet-stream=xdg-open#' ~/.local/share/applications/mimeapps.list ~/.config/mimeapps.list
GNOME not sorting your folders first
It's not in a dialog anywhere, and a pretty lame default behaviour.
dconf write /org/gnome/nautilus/preferences/sort-directories-first true
Restoring huge databases to PostgreSQL
Skip some huge tables by dumping the TOC, removing culprit large tables, and restore with the edited TOC, e.g.
pg_restore -l huge.dump > TOC # edit the TOC file... pg_restore -L TOC -d dbname huge.dump
Output PostgreSQL queries to CSV
COPY (SELECT <query> ...) TO STDOUT CSV HEADER;
Turn off the shitty default "visual" mouse mode in vim
Christ. Add set mouse-=a to ~/.vimrc
Too many leftover git branches merged into master? Nukem!
This will remove any branches on your local git repo that have been merged to master.
for i in $(for b in $(git branch|grep -v '\*'); do git branch $b --merged master; done); \ do git branch -D $i; \ done
Move your MySQL databases
Used to be you could move your /var/lib/mysql directory somewhere else and symlink it. You can, but in newer distros with Apparmor you'll need to declare it:
# In /etc/apparmor.d/tunables/alias alias /var/lib/mysql/ -> /mnt/wherever/mysql/,
Note the trailing comma.