view 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
line wrap: on
line source

#!/bin/bash

PREFIX=$1

STRIP=true
if [ -n "$PREFIX" ]
then
  SEDPREFIX=$(echo $PREFIX | sed -e 's/\//\\\//g')
  SQLPREFIX=$(echo $PREFIX | sed -e "s/'/''/g")

  PREFIX="WHERE path LIKE '${SQLPREFIX}%'"
fi

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