Tim wrote: > Hmm, I hadn't thought about using that to clear away personal files. > I've occasionally wiped out that directory, but hadn't looked at it > recently. I see mine's wasting lots of drive space: > > ~]$ du -h .thumbnails/ > 560M .thumbnails/large > 361M .thumbnails/normal > > Sounds extreme, but then I do a lot of photography work. When disk costs fractions of pennies, is that amount of space even a concern? I've had my thumbnails dir grow over several GB before, after moving my photos to new locations. sing the thumbnails are stored based on the md5 of the path to the image, I ended up duplicating a lot of thumbnails. I believe recent nautilus will try to clean up old/invalid thumbnails, but I don't use nautilus so I've not tested that. It is pretty simple to whip up a script to delete thumbnails for files that don't exist anymore. Here's a little bit of python that might be a start for anyone interested. This only checks the normal size thumbnails, but would be easy to tweak so it checks large ones as well (I didn't have any large thumbnails when I wrote it). #!/usr/bin/python -tt import os import sys import Image import optparse from urllib import unquote from urlparse import urlsplit default = { 'dryrun': False, 'skip_netpaths': False, 'thumbdir': os.path.expanduser('~/.thumbnails'), 'verbose': 0, } usage = '%prog [options]' parser = optparse.OptionParser(usage=usage) parser.add_option('-n', '--dry-run', dest='dryrun', action='store_true', default=default['dryrun'], help='Perform a trial run with no changes made [%default]') parser.add_option('-N', '--skip-netpaths', dest='skip_netpaths', action='store_true', default=default['skip_netpaths'], help='Skip paths on common network file systems') parser.add_option('-t', '--thumbdir', dest='thumbdir', default=default['thumbdir'], metavar='dir', help='Thumbnail directory [%default]') parser.add_option('-v', '--verbose', dest='verbose', action='count', default=default['verbose'], help='Be verbose (may be used more than once) [%default]') opts, args = parser.parse_args() def error(msg): print >> sys.stderr, msg def is_netpath(path): """Poor man's test for common network filesystem paths.""" for netpath in ('/net', '/smb'): if path.startswith(netpath): return True return False thumbs = [os.path.join(path, f) for path, dirs, files in os.walk(opts.thumbdir) for f in files if 'normal' in path and f.endswith('.png')] bad = {} skipped = {} for thumb in thumbs: try: thumburi = Image.open(thumb).info['Thumb::URI'] except KeyError: error('No "Thumb::URI" field in %s' % thumb) continue except IOError, error: error('%s: %s' % (error.strerror, thumb)) continue scheme, netloc, path, query, fragment = urlsplit(thumburi) if scheme != 'file': continue path = unquote(path) if is_netpath(os.path.realpath(path)) and opts.skip_netpaths: skipped[thumb] = path continue if not os.path.exists(path): bad[thumb] = path if not opts.dryrun: try: os.remove(thumb) except OSError, e: error('Failed to remove "%s": %s' % (thumb, e.strerror)) continue print 'Total thumbnails: %d' % len(thumbs) print 'Bad thumbnails: %d' % len(bad) print 'Skipped thumbnails: %d' % len(skipped) if opts.verbose: for thumb, path in sorted(bad.items(), key=lambda x: x[1]): print '%s -> %s' % (thumb, path) -- Todd OpenPGP -> KeyID: 0xBEAF0CE3 | URL: www.pobox.com/~tmz/pgp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ When I think about all the crap I learned in high school ... it's a wonder I can think at all. -- Paul Simon
Attachment:
pgpbZcNj8T5mE.pgp
Description: PGP signature
-- fedora-list mailing list fedora-list@xxxxxxxxxx To unsubscribe: https://www.redhat.com/mailman/listinfo/fedora-list Guidelines: http://fedoraproject.org/wiki/Communicate/MailingListGuidelines