Skip to content

Instantly share code, notes, and snippets.

@davidverweij
Last active August 31, 2021 13:16
Show Gist options
  • Save davidverweij/ec8163390699948d4cc0d471c0a801ac to your computer and use it in GitHub Desktop.
Save davidverweij/ec8163390699948d4cc0d471c0a801ac to your computer and use it in GitHub Desktop.
Personal common terminal commands (and their libraries) for batch processing

Terminal Cheat Sheet

A little Gist to keep terminal commands I have used, and will likely re-use, for batch processing files (semi-everyday use). Let me know if I am missing out on some.

Ps. I'm on MacOS

Convert multiple .wav to .mp3

Required: lame

cd /folder/containing/.wav/files
for f in *.wav; do lame --preset insane "$f" "${f%.wav}.mp3"; done

Generate multiple .docx based on a single template

Required: csv2docx

poetry run convert -t template.docx -c data.csv -n csv_column_name_for_output_naming

Converting multiple .docx to .pdf

Required: docx2pdf

docx2pdf input_dir/ output_dir/

Optimize multiple .jpg and .png images

Required: optimize-images

Note: destructive operation (overwrites files)

cd /folder/containing/the/images
optimize-images ./

Check for differences in .csv files versions

Note: suppresses errors

cd /folder/containing/the/new_and'_old.csv'_files
for f in *.csv; do print "$f"; diff "$f" "${f%.csv}_old.csv"; done 2> /dev/null

.zip compress multiple folders individually

cd /folder/containing/the/individual/folders
find . -type d -d 1 -exec zip -r {} {} \;

Print a list of filenames without extension

cd /folder/containing/files
print -rl -- *.extension(:r)

Convert .json with repeating schema to .csv

Stored as function in ~/.zshrc Required: jq

Note: considers all values to be string

json2csv() {jq -r '(first | keys_unsorted) as $keys | map([to_entries[] | .value]) as $rows | $keys,$rows[] | @csv' $1.json > $1.csv;}

json2csv filename_stem
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment