comparison scripts/duplicates.sh @ 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 6b997f4f7e19
children 3951f6d27219
comparison
equal deleted inserted replaced
109:6cf5eb5b0be1 110:bae09ef524cb
1 #!/bin/bash 1 #!/bin/bash
2 2
3 PREFIX=$1 3 PREFIX=$1
4 4
5 STRIP=true
5 if [ -n "$PREFIX" ] 6 if [ -n "$PREFIX" ]
6 then 7 then
7 PREFIX="WHERE path LIKE '${PREFIX}%'" 8 SEDPREFIX=$(echo $PREFIX | sed -e 's/\//\\\//g')
9 SQLPREFIX=$(echo $PREFIX | sed -e "s/'/''/g")
10
11 PREFIX="WHERE path LIKE '${SQLPREFIX}%'"
8 fi 12 fi
9 13
10 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;" 14 if ${STRIP}
15 then
16 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}/|/"
17 else
18 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;"
19 fi