Skip to content

Instantly share code, notes, and snippets.

@berndverst
Last active June 25, 2020 22:51
Show Gist options
  • Save berndverst/184c054f230cadeedd9fc503997053d8 to your computer and use it in GitHub Desktop.
Save berndverst/184c054f230cadeedd9fc503997053d8 to your computer and use it in GitHub Desktop.
Shell (Bash, ZSH) functions for easily organizing media files and documents on MacOS and Linux
# Example use:
# cd ~/Downloads
# mvmedia .
# mvdocs .
#
# Intended to be used for MacOS, but can be used on Linux if destination folders are altered.
# Simply save this file and source in your .zshrc, .bash_profile, .bashrc etc
mvimages() {
DESTINATION="$HOME/Pictures/"
if [ "$#" -eq 2 ]; then
DESTINATION=$2
fi
rsync -rv --include '*.JPG' --include '*.jpg' --include '*.png' --include '*.PNG' --include '*.gif' --include '*.GIF' --include '*.HEIC' --include '*.heic' --exclude '*' --prune-empty-dirs --remove-source-files $1 $DESTINATION 2>/dev/null
}
mvvideos() {
DESTINATION="$HOME/Videos/"
if [ "$#" -eq 2 ]; then
DESTINATION=$2
fi
rsync -rv --include '*.mp4' --include '*.MP4' --include '*.mov' --include '*.MOV' --include '*.mpg' --include '*.MPG' --include '*.mkv' --include '*.MKV' --include '*.AVI' --include '*.avi' --exclude '*' --prune-empty-dirs --remove-source-files $1 $DESTINATION 2>/dev/null
}
mvdocs() {
DESTINATION="$HOME/Documents/"
if [ "$#" -eq 2 ]; then
DESTINATION=$2
fi
rsync -rv --include '*.doc' --include '*.docx' --include '*.DOC' --include '*.DOCX' --include '*.PPT' --include '*.ppt' --include '*.PPTX' --include '*.pptx' --include '*.pdf' --include '*.PDF' --include '*.xls' --include '*.XLS' --include '*.key' --include '*.KEY' --include '*.odp' --include '*.ODP' --include '*.xlsx' --include '*.XLSX' --include '*.txt' --include '*.TXT' --include '*.rtf' --include '*.RTF' --include '*.odt' --include '*.ODT' --include '*.ods' --include '*.ODS' --include '*.md' --include '*.MD' --exclude '*' --prune-empty-dirs --remove-source-files $1 $DESTINATION 2>/dev/null
}
mvmusic() {
DESTINATION="$HOME/Music/"
if [ "$#" -eq 2 ]; then
DESTINATION=$2
fi
rsync -rv --include '*.m4a' --include '*.M4A' --include '*.MP3' --include '*.mp3' --include '*.aac' --include '*.AAC' --include '*.mid' --include '*.MID' --include '*.wav' --include '*.WAV' --include '*.ogg' --include '*.OGG' --include '*.WMA' --include '*.wma' --include '*.aif' --include '*.AIF' --include '*.mpa' --include '*.MPA' --include '*.aiff' --include '*.AIFF' --include '*.flac' --include '*.FLAC' --include '*.m4b' --include '*.M4B' --exclude '*' --prune-empty-dirs --remove-source-files $1 $DESTINATION 2>/dev/null
}
mvaudiovideo() {
mvvideos "$@"
mvmusic "$@"
}
mvmedia() {
mvaudiovideo "$@"
mvimages "$@"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment