The dominant populations one may find in such a data-wallow may include:
- product pdf's and datasheets
- books and reference documents
- videos of things exploding into flames
- good old-fashioned porn
- music videos from YouTube
- bad old-fashioned porn
- esoteric music files from atypical sources
- graphs documenting the aggrandizement of a veiled fascism
- cat pictures
Recently I felt the need to abuse myself by sorting a folder full of shit video files I wasn't in the mood to watch. It so happened that they were mostly rips from various flash players and all had meaningless hash salads for filenames. Because of this, manually picking through each one becomes tedious. Tab-completion is defeated; it's difficult to even remember which filename you're trying to target. I put together a crude script to automate the review, renaming, and categorization of the ~200 files.
#!/bin/bash SAVEIFS=$IFS IFS=$(echo -en "\n\b") if [ ! -d "funnyshit" ]; then mkdir funnyshit; fi if [ ! -d "depressingshit" ]; then mkdir depressingshit; fi if [ ! -d "infuriatingshit" ]; then mkdir infuriatingshit; fi if [ ! -d "junk" ]; then mkdir junk; fi for file in $(ls -1); do echo -e "\033[0;36mPlaying: $file\033[0m " mplayer $file --really-quiet sleep 1 whiptail --inputbox "Filename Editor\nESC to skip this file" 8 60 "$file" 2>tname if [ $? != 0 ]; then rm tname echo -e "\033[0;36mSkipping $file\033[0m" continue fi newname=$(cat tname); rm tname if [ $newname != $file ]; then mv $file $newname echo -e "\033[0;36mChanged $file to $newname\033[0m" file=$newname else echo -e "\033[0;36mDid not change file name\033[0m" fi whiptail --radiolist "where to put it" 15 50 8 "funnyshit" "" on "depressingshit" "" off "infuriatingshit" "" off "junk" "" off 2>tdir if [ $? != 0 ]; then rm tdir; break; fi destination=$(cat tdir); rm tdir echo -e "\033[0;36mMoving $file to $destination\033[0m" mv $file $destination/ done IFS=$SAVEIFS
The script just blindly picks up every file in the directory and plays it. Non-video files can be manually skipped or sorted if they're identifiable. Video files are played with Mplayer. Once an evaluation is made, user hits escape to terminate Mplayer, and a dialog prompts for an optional new name and a choice of output directory bins.
There are a lot of ways to make this more flexible and useful in other tasks or with other filetypes, but I hope it's obvious by now that i don't really care any more.