Aller au contenu

Démarrage rapide

Ce tour prend environ cinq minutes. Rien n'est supprimé avant l'étape 4, et l'étape 4 ne retire que les éléments que recommande la sélection intelligente (des caches sans risque et des données régénérables que vous n'avez pas utilisés depuis un moment), parce que vous le demandez avec --smart. Si vous préférez choisir élément par élément, le tableau de bord de l'étape 2 s'ouvre sans rien de sélectionné.

Il suppose que lu-cleaner est installé. Les tailles ci-dessous sont données à titre d'illustration.

  1. Voir où part l'espace

    Fenêtre de terminal
    lu-cleaner scan --summary

    scan fonctionne en lecture seule. Il lance tous les scanners et affiche une ligne par catégorie :

    $ lu-cleaner scan --summary CATEGORY SIZE ITEMS RECOMMENDED 🌳 Worktrees 42.8 GB 31 11.6 GB (9) 📦 Project artifacts 36.4 GB 118 9.20 GB (38) 📱 iOS Simulators 24.1 GB 14 8.70 GB (6) 🔨 Xcode 18.6 GB 12 15.2 GB (5) 🤖 Android 14.3 GB 19 3.40 GB (7) 🧠 AI tools 12.9 GB 57 4.10 GB (22) 🟨 JS toolchain 17.2 GB 48 12.3 GB (27) 🧩 IDEs 3.10 GB 15 2.60 GB (11) 💻 System 6.40 GB 25 1.90 GB (6)   Total 176 GB in 331 items · ★ 69.0 GB recommended (131 items) Disk: 43.0 GB free of 494 GB (91% used) → run: lu-cleaner clean --smart

    • SIZE correspond à l'espace que libérerait le nettoyage de tous les éléments de la catégorie (hors entrées en rapport seul).
    • RECOMMENDED correspond à ce que la sélection intelligente (smart select) choisirait, avec le nombre d'éléments. Le ★ signale les mêmes éléments dans le rapport détaillé.

    La première analyse peut prendre une minute ou plus sur une machine chargée : elle mesure des milliers de dossiers. Retirez --summary pour lister les 15 plus gros éléments de chaque catégorie, ajoutez --all pour tout lister, ou restreignez avec -c :

    Fenêtre de terminal
    lu-cleaner scan -c worktrees,artifacts
  2. Ouvrir le tableau de bord

    Fenêtre de terminal
    lu-cleaner

    Sans commande, lu-cleaner ouvre le tableau de bord interactif. Les catégories se remplissent au fur et à mesure que les scanners terminent. Une fois l'analyse finie, rien n'est sélectionné : le pied de page indique « nothing selected » et la ligne d'état vous rappelle comment choisir. Sélectionnez ce que vous voulez supprimer avec space (un élément, ou une catégorie entière), ou appuyez sur a pour sélectionner les éléments recommandés et voir ce qu'elle a choisi. Appuyez ensuite sur d. Rien n'est supprimé tant que vous ne confirmez pas.

    Touche Action
    ↑ ↓ / enter Se déplacer / ouvrir une catégorie
    space Sélectionner ou désélectionner l'élément sous le curseur (sur une catégorie : tout sauf les éléments caution)
    a Sélection intelligente sur la vue actuelle : sélectionne les éléments recommandés
    d Nettoyer la sélection (affiche le total et demande une confirmation)
    ? / q Aide / quitter

    Appuyez sur q pour sortir sans rien toucher. Votre premier nettoyage détaille chaque écran, et Raccourcis clavier liste toutes les touches.

  3. Répéter le nettoyage recommandé

    Fenêtre de terminal
    lu-cleaner clean --yes --smart --dry-run

    --yes nettoie sans passer par le sélecteur, --smart ne garde que les éléments recommandés, et --dry-run (-n) ne supprime rien. La sortie affiche le plan exact, suivi de ce qui se passerait :

    $ lu-cleaner clean --yes --smart --dry-run 🌳 Worktrees 11.6 GB · 9 items · ★ 11.6 GB recommended   NAME SIZE AGE RISK RECO PATH   my-app · feature/login 2.40 GB 3w moderate ★ ~/.codex/worktrees/a1b2/my-app   shop-app · fix/cart-badge 1.90 GB 2w moderate ★ ~/.cursor/worktrees/shop-app/k3m   …   📦 Project artifacts 9.20 GB · 38 items · ★ 9.20 GB recommended   NAME SIZE AGE RISK RECO PATH   shop-app › node_modules 1.42 GB 3mo moderate ★ ~/dev/shop-app/node_modules   shop-app › android/app/build 1.20 GB 3mo safe ★ ~/dev/shop-app/android/app/build   …   Plan: 131 items · 69.0 GB (dry run)   Dry run: nothing was deleted — 130 items would free 67.7 GB.   iPhone 11 · iOS 16.4 (unavailable): would run: xcrun simctl delete 5A1F0C2E-7B3D-4E8A-9C61-2F4B8D0E1A37 Skipped: 1   - codex:my-app › node_modules: in use: process 51234 runs a program or library from ~/.codex/worktrees/a1b2/my-app/node_modules

    Une simulation rejoue toutes les vérifications de dernière minute d'un vrai nettoyage sans rien supprimer : le garde-fou de sécurité, les applications en cours d'exécution, les fichiers utilisés, et les vérifications git de la suppression d'un worktree (verrou, modifications non commitées, commits sur aucune branche, dépôts imbriqués). C'est pour cela qu'elle peut déjà signaler des éléments ignorés : ici, un agent a lancé des tests dans un worktree après l'analyse, donc son node_modules est utilisé.

  4. Nettoyer

    Fenêtre de terminal
    lu-cleaner clean --yes --smart

    lu-cleaner relance l'analyse, affiche de nouveau le plan, puis nettoie. Le récapitulatif se termine par deux chiffres :

    $ lu-cleaner clean --yes --smart   … ✓ 130 items cleaned · 67.7 GB freed (estimated)   Disk free: 43.0 GB → 110 GB (67.2 GB measured) Skipped: 1   - codex:my-app › node_modules: in use: process 51234 runs a program or library from ~/.codex/worktrees/a1b2/my-app/node_modules

    Estimated (estimé) est la somme de ce que les éléments nettoyés devaient libérer. Measured (mesuré) est la variation de l'espace libre signalée par le système de fichiers entre avant et après. Un léger écart est normal (d'autres applications écrivent sur le disque pendant ce temps). Un écart important signifie que quelque chose retient encore l'espace : voir l'étape suivante.

    Avec --trash, les fichiers et dossiers sont déplacés dans la Corbeille à la place : le récapitulatif les compte à part (moved to the Trash), jamais comme libérés, et les worktrees et les éléments de type commande sont ignorés, puisqu'ils ne peuvent pas être annulés.

    Pour ne nettoyer qu'une partie de la recommandation, combinez --smart avec une catégorie :

    Fenêtre de terminal
    lu-cleaner clean --yes --smart -c artifacts,js
  5. Vérifier le résultat avec doctor

    Fenêtre de terminal
    lu-cleaner doctor

    doctor explique pourquoi l'espace libéré n'apparaît pas toujours : instantanés locaux APFS, fichiers en attente dans la Corbeille, applications qui gardent ouverts des fichiers supprimés. Il reprend aussi le récapitulatif de l'analyse par catégorie, et ne supprime jamais rien.

    $ lu-cleaner doctor Disk   ██████████████████████░░░░░░░░ 78% used · 110 GB free of 494 GB   APFS local snapshots (1)   com.apple.TimeMachine.2026-09-29-093012.local   They pin the blocks of deleted files: that space comes back only when they   expire (about 24h) or are thinned. To reclaim it now (lu-cleaner never runs these):   tmutil thinlocalsnapshots / 999999999999 4   sudo tmutil deletelocalsnapshots 2026-09-29-093012   Trash   4.20 GB in 312 files — empty it to free the space   Running apps that block cleaning   Xcode DerivedData, Archives and device support are in use …

  6. Revoir ce qui a été fait

    Fenêtre de terminal
    lu-cleaner history

    Chaque vrai nettoyage, depuis le tableau de bord ou depuis clean --yes, est ajouté à ~/.local/state/lu-cleaner/history.jsonl. Les simulations ne sont pas enregistrées. Les 30 entrées les plus récentes sont affichées ; --limit modifie ce nombre, et --limit 0 affiche tout.

    $ lu-cleaner history --limit 4 TIME STATUS METHOD SIZE FREED NAME PATH/COMMAND 2026-09-29 10:42 done delete 1.42 GB 1.42 GB shop-app › node_modules ~/dev/shop-app/node_modules 2026-09-29 10:42 done worktree 2.40 GB 2.40 GB my-app · feature/login ~/.codex/worktrees/a1b2/my-app 2026-09-29 10:42 done command 310 MB 310 MB iPhone 11 · iOS 16.4 (unavailable) $ xcrun simctl delete 5A1F0C2E-7B3D-4E8A-9C61-2F4B8D0E1A37 2026-09-29 10:42 skipped delete 1.28 GB codex:my-app › node_modules ~/.codex/worktrees/a1b2/my-app/node_modules   ! in use: process 51234 runs a program or library from ~/.codex/worktrees/a1b2/my-app/node_modules   Showing the last 4 of 131 entries (--limit 0 for all). Total freed: 67.7 GB over 130 cleaned items (~/.local/state/lu-cleaner/history.jsonl)

    FREED est ce qui a réellement été libéré : moins que SIZE quand les données sont partagées avec d'autres fichiers (liens physiques ou clones APFS), vide pour les éléments ignorés. Les déplacements vers la Corbeille ne libèrent rien tant que vous ne l'avez pas vidée : ils sont donc totalisés à part.