Construire une commande find sans mémoriser les flags
La commande find de Linux est la chose la plus utile dans un shell, et la plus pénible à retenir. "C'était -mtime -7 ou +7 ? Est-ce que -size +100M veut dire plus gros ou plus petit ? Comment supprimer les résultats sans risque ?" Chaque fois que vous en avez besoin, vous finissez par googler la même réponse Stack Overflow de 2012.
Ce builder est l'opposé. Vous cliquez ce que vous voulez (chemin, pattern de nom, type de fichier, taille, heure de modification, action) et la commande apparaît à droite, prête à copier. Pas d'exécution, pas de risque : c'est un builder, pas un runner. La commande tourne uniquement quand vous la collez dans votre propre terminal, où vous pouvez la lire d'abord.
Ce que vous pouvez construire :
- chercher un dossier par glob (`*.log`, `*.tmp`), nom, chemin ou regex
- filtrer par type (fichier, répertoire, lien symbolique, device bloc)
- filtrer par taille (`-size +100M` = plus gros que 100 mégaoctets)
- filtrer par heure (`-mtime -7` = changé dans les 7 derniers jours)
- filtrer par owner, group, permissions, empty / executable / readable / writable
- choisir une action : print, print null-terminé pour `xargs -0`, delete, lancer une commande par match, ou batcher une commande à travers les matches
L'aperçu affiche aussi une sortie exemple simulée pour que vous voyiez ce que la commande matcherait avant de la lancer sur des vraies données.
Comment l'utiliser
- Tapez le chemin de départ dans "Where to search". Le défaut est . (le dossier actuel). Utilisez /var/log pour les logs système, ~/Downloads pour votre dossier de téléchargements, ou / pour tout le système (lent, permissions root généralement requises).
- Activez la section dont vous avez besoin (chaque panneau a son propre interrupteur). Vous n'avez pas à remplir chaque section, seulement celles qui comptent pour la recherche.
- Choisissez un pattern de nom : tapez quelque chose comme `*.log` et choisissez le mode. \-name est le plus courant (glob sensible à la casse). \-iname ignore la casse. \-path matche le chemin complet incluant les dossiers. \-regex matche une expression régulière.
- Choisissez un type de fichier avec la rangée de chips : fichier, répertoire, lien symbolique. Vous pouvez sélectionner plusieurs types à la fois (find les traite comme OR).
- Définissez le filtre de taille. Comparaison : = exact, > plus grand que, < plus petit que. Choisissez une unité : c (octets), k (kilooctets), M (mégaoctets), G (gigaoctets). Exemple : `-size +100M` trouve les fichiers plus gros que 100 mégaoctets.
- Définissez le filtre temporel. Choisissez modifié (\-mtime), accédé (\-atime) ou changé (\-ctime), puis choisissez une unité (minutes / heures / jours) et un nombre. \-mtime -7 signifie "modifié dans les 7 derniers jours".
- Choisissez une action : \-print (le défaut, imprime les chemins), \-print0 (null-terminé, pour piper vers `xargs -0`), \-delete (supprime les matches, dangereux, gros avertissement rouge affiché), ou \-exec ... \; pour lancer une commande par match. Utilisez {} comme placeholder pour chaque chemin matché.
- Copiez la commande depuis le panneau d'aperçu à droite. Ouvrez votre terminal, collez, lisez ce qu'elle fait, puis appuyez sur Entrée. Le builder n'exécute jamais rien.
Quand c'est utile
Six endroits où vous attrapez find et ne voulez plus jamais mémoriser les flags :
- Nettoyer de vieux logs. Votre disque est plein et `/var/log` est suspect. Vous voulez tout ce qui est plus vieux que 90 jours et finit en .log : `find /var/log -type f -name "*.log" -mtime +90 -delete`. Le builder le produit en 4 clics, vous le lisez d'abord pour vous assurer de ne pas avoir écrit -mtime -90 par erreur.
- Trouver des fichiers énormes mangeant votre disque. `df` dit que le drive est à 90 % plein mais vous n'avez aucune idée de quel dossier est responsable. Vous demandez tous les fichiers plus gros que 1 Go n'importe où sur le système : `find / -type f -size +1G`. Trier par taille, attaquer les pires offenders.
- Lister ce qui a changé aujourd'hui. Vous avez lancé un installeur ou un script de build et vous voulez savoir quels fichiers il a touchés. `find / -type f -mtime -1` liste tout ce qui a été modifié dans les 24 dernières heures. Utile pour le débogage, les audits de sécurité et traquer "d'où vient cette config".
- Renommer ou traiter des fichiers en masse. Vous voulez convertir chaque image .heic en .jpg : `find ~/Photos -name "*.heic" -print0 | xargs -0 -I {} convert {} {}.jpg`. Le combo \-print0 plus `xargs -0` est la façon sûre : il gère les noms de fichiers avec espaces, guillemets et unicode sans casser.
- Nettoyer les répertoires vides. Après un gros déplacement, certains dossiers restent vides. `find . -type d -empty -delete` les enlève d'un coup. Le builder vous montre la commande exacte avant que vous la lanciez.
- Trouver les fichiers avec mauvaises permissions. Votre serveur web lance des 403 parce que certains fichiers ne sont pas lisibles par tous. `find /var/www -type f ! -perm -044` liste les fichiers où "others" ne peut pas lire. Corrigez-les avec un `chmod` de suivi.