Aggiornato a ottobre 2026: lo script del 2008 aveva un bug. Cercava cartelle chiamate .DS_Store, ma .DS_Store è un file, quindi non ne cancellava nessuno. Qui sotto c’è la versione corretta, per Python 3.
Windows XP crea automaticamente un file, chiamato Thumbs.db, in tutte le cartelle che visita per salvarne le anteprime. La stessa cosa fa il Finder di OS X, creando un file dal nome .DS_Store con la posizione delle icone e le impostazioni di visualizzazione della cartella.
Stanco di avere il mio hard disk pieno di questi file (da Vista Windows tiene le anteprime in una cache centralizzata, ma Vista e Windows 7 creano ancora Thumbs.db sulle cartelle di rete), ho creato uno script Python che analizza ricorsivamente una directory (specificata dall’utente) e stampa tutte le posizioni di questi file.
Lo script richiede il path da cui iniziare la ricerca. Senza altre opzioni stampa soltanto le posizioni dei file trovati; con --delete li cancella anche. I nomi sono confrontati senza distinguere maiuscole e minuscole, come fa Windows.
Esempio:
python clean_junk.py C:\stampa la posizione dei file indesiderati.
python clean_junk.py C:\ --deletestampa la posizione dei file indesiderati e li elimina dal disco.
Veniamo al codice sorgente:
import argparse
from pathlib import Path
JUNK = {"thumbs.db", ".ds_store"} # lowercase: Windows names are case-insensitive
def find_junk(root):
for path in Path(root).rglob("*"):
if path.name.lower() in JUNK and path.is_file():
yield path
def main():
parser = argparse.ArgumentParser(description="Find Thumbs.db and .DS_Store files.")
parser.add_argument("root", help="folder to scan, recursively")
parser.add_argument("--delete", action="store_true", help="delete them (default: only list)")
args = parser.parse_args()
for path in find_junk(args.root):
print(path)
if args.delete:
path.unlink()
if __name__ == "__main__":
main()Se preferite evitare Python, su Windows basta del /S /F /A:H Thumbs.db dalla cartella da ripulire, e su macOS o Linux find . -name .DS_Store -type f -delete.