Last active
December 29, 2015 11:09
-
-
Save frafra/7661434 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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