Mercurial > dedupe
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 |
