diff options
| author | moehm | 2014-05-05 21:34:03 +0200 |
|---|---|---|
| committer | moehm | 2014-05-05 21:34:03 +0200 |
| commit | f29bc38172ee4be42f618808ccbefb1fc91f52e8 (patch) | |
| tree | f7014346e50b34558604e99da0467947b49e8862 | |
| parent | a4aadb7541c7d9a2453ed6065f40c301e4c0087e (diff) | |
| download | dotfiles-f29bc38172ee4be42f618808ccbefb1fc91f52e8.tar.gz | |
Improvements
| -rwxr-xr-x | bin/duplicate.sh | 51 |
1 files changed, 39 insertions, 12 deletions
diff --git a/bin/duplicate.sh b/bin/duplicate.sh index 655aff2..c35f46f 100755 --- a/bin/duplicate.sh +++ b/bin/duplicate.sh @@ -11,6 +11,14 @@ DATABASE="/tmp/double.db" DIR="./found_doubles" COUNT=0 +SDIR=$(pwd) + +if [ $1 = "-a" ]; then + ALL=0 + shift +else + ALL=1 +fi if [ $# -eq 0 ]; then LOOP=false @@ -23,27 +31,42 @@ echo "" while true; do if [ $LOOP = true ]; then - if [ ! -d "$1" ]; then - echo "Can't chdir to $1." - exit 1 - else - echo "Changing directory to '$1'." - cd "$1" - shift - fi + cd $SDIR + while true; do + if [ $# -eq 0 ]; then + exit 0 + fi + + if [ ! -d "$1" ]; then + echo "-- Can't chdir to $1. Shifting." + shift + else + echo "" + echo "Changing directory to '$1'." + cd "$1" + PWD=$(pwd) + shift + break + fi + done else echo "Working in directory '$(pwd)'." fi - sqlite3 $DATABASE "CREATE TABLE files (hash TEXT UNIQUE)" + sqlite3 $DATABASE "CREATE TABLE files (id INTEGER PRIMARY KEY, file TEXT, hash TEXT UNIQUE)" mkdir -p $DIR TMP=0 for i in *; do if [ -f "$i" ]; then HASH=$(md5sum "$i" | awk '{ print $1 }') - sqlite3 $DATABASE "INSERT INTO files VALUES ('$HASH')" 2>/dev/null + sqlite3 $DATABASE "INSERT INTO files VALUES (NULL, '$i', '$HASH')" 2>/dev/null if [ ! $? -eq 0 ]; then - mv -v "$i" "$DIR" + echo "----------------------------" + echo "Found a duplicate: " + echo "$i" + sqlite3 $DATABASE "SELECT file FROM files WHERE hash='$HASH'" + echo "Moving $i to $PWD $DIR" + mv "$i" "$DIR" ((COUNT ++)) ((TMP ++)) fi @@ -55,7 +78,9 @@ while true; do fi if [ $LOOP = true ]; then - sqlite3 $DATABASE "DROP TABLE files" + if [ $ALL -eq 1 ]; then + sqlite3 $DATABASE "DROP TABLE files" + fi echo "" else break @@ -68,3 +93,5 @@ done echo "Found and moved $COUNT files to $DIR." rm -f $DATABASE + +exit 0 |
