summaryrefslogtreecommitdiff
path: root/bin/duplicate.sh
diff options
context:
space:
mode:
authormoehm2014-05-05 21:34:03 +0200
committermoehm2014-05-05 21:34:03 +0200
commitf29bc38172ee4be42f618808ccbefb1fc91f52e8 (patch)
treef7014346e50b34558604e99da0467947b49e8862 /bin/duplicate.sh
parenta4aadb7541c7d9a2453ed6065f40c301e4c0087e (diff)
downloaddotfiles-f29bc38172ee4be42f618808ccbefb1fc91f52e8.tar.gz
Improvements
Diffstat (limited to 'bin/duplicate.sh')
-rwxr-xr-xbin/duplicate.sh51
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