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