changeset 110:bae09ef524cb

Fixes escaping problem in SQL. Introduces striping functionality for prefixes.
author Tom Fredrik Blenning Klaussen <bfg@bfgconsult.no>
date Tue, 18 Feb 2014 19:42:05 +0100
parents 6cf5eb5b0be1
children 9d9926a6011f
files scripts/duplicates.sh
diffstat 1 files changed, 11 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/duplicates.sh	Tue Feb 18 19:41:23 2014 +0100
+++ b/scripts/duplicates.sh	Tue Feb 18 19:42:05 2014 +0100
@@ -2,9 +2,18 @@
 
 PREFIX=$1
 
+STRIP=true
 if [ -n "$PREFIX" ]
 then
-  PREFIX="WHERE path LIKE '${PREFIX}%'"
+  SEDPREFIX=$(echo $PREFIX | sed -e 's/\//\\\//g')
+  SQLPREFIX=$(echo $PREFIX | sed -e "s/'/''/g")
+
+  PREFIX="WHERE path LIKE '${SQLPREFIX}%'"
 fi
 
-sqlite3 ~/.DeDupe.sqlite "SELECT hex(checksum),size,path FROM (SELECT * FROM files WHERE checksum IN (SELECT checksum FROM (SELECT checksum, COUNT(*) as num FROM files ${PREFIX} GROUP BY checksum) WHERE num >= 2)) ${PREFIX} ORDER BY size;"
+if ${STRIP}
+then
+  sqlite3 ~/.DeDupe.sqlite "SELECT hex(checksum),size,path FROM (SELECT * FROM files WHERE checksum IN (SELECT checksum FROM (SELECT checksum, COUNT(*) as num FROM files ${PREFIX} GROUP BY checksum) WHERE num >= 2)) ${PREFIX} ORDER BY size;" | sed "s/|${SEDPREFIX}/|/"
+else
+  sqlite3 ~/.DeDupe.sqlite "SELECT hex(checksum),size,path FROM (SELECT * FROM files WHERE checksum IN (SELECT checksum FROM (SELECT checksum, COUNT(*) as num FROM files ${PREFIX} GROUP BY checksum) WHERE num >= 2)) ${PREFIX} ORDER BY size;"
+fi