Shell in the kobo, from the root :
sqlite3 -header .kobo/KoboReader.sqlite "SELECT ContentID FROM content WHERE BookTitle is null and ReadStatus = 2 ORDER BY Title;" | grep epub | sed 's!file:///mnt/onboard/!!' | while read f; do rm -f "$f"; done
Shell in the kobo, from the root :
sqlite3 -header .kobo/KoboReader.sqlite "SELECT ContentID FROM content WHERE BookTitle is null and ReadStatus = 2 ORDER BY Title;" | grep epub | sed 's!file:///mnt/onboard/!!' | while read f; do rm -f "$f"; done
Using an online SQLite viewer like https://inloop.github.io/sqlite-viewer/ : list all read books
SELECT
Title,
Attribution as Auteur,
DateLastRead as DateTermine,
___PercentRead as PourcentageLu
FROM content
WHERE ContentType = '6'
AND ReadStatus = 2 -- Terminé
AND Title IS NOT NULL
AND Title != ''
ORDER BY DateLastRead DESC;Limit to a specific year :
SELECT
Title,
Attribution as Auteur,
DateLastRead as DateTermine,
___PercentRead as PourcentageLu
FROM content
WHERE ContentType = '6'
AND ReadStatus = 2 -- Terminé
AND Title IS NOT NULL
AND Title != ''
AND strftime('%Y', DateLastRead) = '2025' -- Filtre sur l'année 2025
ORDER BY DateLastRead DESC;To get them numbered in order of reading :
SELECT
(SELECT COUNT(*)
FROM content c2
WHERE c2.ContentType = '6'
AND c2.ReadStatus = 2
AND c2.Title IS NOT NULL
AND c2.Title != ''
AND strftime('%Y', c2.DateLastRead) = '2025'
AND c2.DateLastRead <= c1.DateLastRead) as Numero,
c1.Title,
c1.Attribution as Auteur,
c1.DateLastRead as DateTermine,
c1.___PercentRead as PourcentageLu
FROM content c1
WHERE c1.ContentType = '6'
AND c1.ReadStatus = 2
AND c1.Title IS NOT NULL
AND c1.Title != ''
AND strftime('%Y', c1.DateLastRead) = '2025'
ORDER BY c1.DateLastRead ASC;
To list before removal :