Skip to content

Instantly share code, notes, and snippets.

@frafra
Last active December 29, 2015 11:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save frafra/7661434 to your computer and use it in GitHub Desktop.
Save frafra/7661434 to your computer and use it in GitHub Desktop.
#!/bin/bash
# organize-your-files.sh
# Description: Organize your files
# Author: FraFra (Francesco Frassinelli - frafra.eu)
# License: GPLv3
#
# Idea presa da:
# http://magliettabianca.blogspot.it/2013/11/bash-guida-allautomazione-organizzare-i.html
#
# Questa versione migliora alcuni aspetti:
# - La ricerca su disco è ricorsiva e si avvale di find
# - La ricerca su disco viene fatta una sola volta
# Nella versione originale ogni regola impone una nuova lettura
# della cartella
# - Le regole non devono essere numerate
# - Le cartelle di destinazione vengono create automaticamente
# - Al posto di grep, cut, readline ed echo,
# vengono usate le catatteristiche già presenti in bash
configtable="image/::$HOME/Pictures
video/::$HOME/Videos
audio/::$HOME/Music
application/pdf::$HOME/Documents
text/plain:.sh:$HOME/Shellscripts
text/plain::$HOME/Documents"
IFS=$'\n' config=($configtable)
IFS=$'\n' results=($(find -type f -exec file --mime-type {} \;))
for result in ${results[@]}; do
name=${result%: *}
mime=${result##*: }
for confline in "${config[@]}"; do
IFS=$':' conf=($confline)
mimetype=${conf[0]}
extension=${conf[1]}
destination=${conf[2]}
if [[ $mime == *$mimetype* && $name == *$extension ]]; then
mkdir -pv $destination && mv $name $destination
fi
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment