#!/bin/usr/env bash ## Run this script in any directory that's filled with random files ## you want to sort by file extensions into respective subdiorectories. # Change to current directory cd $(pwd) # Create subdirectories dest="_sortiert" mkdir -p "${dest}" dirs=("Images" "Archives" "Videos" "Audio" "Documents" "Misc") for dir in "${dirs[@]}"; do mkdir -p "${dest}/${dir}" done # Function for moving files move() { local dir="$1" shift local extensions=("$@") for ext in "${extensions[@]}"; do mv ./*."${ext}" "${dest}/${dir}" 2>/dev/null done } # Move files by extension move "Images" "jpg" "jpeg" "JPG" "png" "PNG" "svg" "gif" "webp" "bmp" move "Archives" "zip" "rar" "tar" "gz" move "Videos" "MOV" "mov" "mp4" "mkv" "avi" move "Audio" "mp3" "ogg" "mpeg" "wav" "flac" move "Documents" "doc*" "odt" "pdf" "txt" "ods" # Move misc find . -maxdepth 1 -type f -exec mv {} "${dest}/Misc" \; # Remove empty directories find "${dest}" -type d -empty -delete