ToolActToolAct

Outil de renommage de fichiers en lot

Ajoutez des préfixes, suffixes, numéros de séquence, recherche et remplacement, changement de casse, modification d'extension — tout dans votre navigateur

Ajouter des fichiers

Glissez les fichiers ici, ou cliquez sur le bouton ci-dessous

Tout type et toute quantité de fichiers, traités uniquement dans votre navigateur — jamais téléversés

Qu'est-ce que le renommage de fichiers en lot ?

Le renommage de fichiers en lot consiste à modifier en une seule passe les noms d'un groupe de fichiers selon un ensemble de règles. Cas courants : transformer des exports d'appareil photo comme IMG_1234.JPG en 2026-06-voyage-001.jpg, préfixer des ressources d'export d'interface avec @2x_, séquencer des reçus scannés selon la date de facturation. Le renommage intégré au Finder de macOS couvre Rechercher-Remplacer et un format « nom + compteur », mais ne peut pas réécrire les extensions ; le renommage par Tab de l'Explorateur Windows ne gère que des numéros de séquence simples (PowerToys PowerRename ajoute le regex mais nécessite une installation séparée). Les tâches plus complexes passent généralement par ReNamer, Bulk Rename Utility, ou des scripts PowerShell / shell faits maison. Cet outil expose chaque opération comme un contrôle visuel avec aperçu en direct et détection des doublons, afin que vous puissiez vérifier le résultat avant de télécharger. Tout s'exécute dans la mémoire du navigateur, donc les noms de fichiers contenant des codes de projet, des noms de clients ou des informations personnelles ne quittent jamais votre machine.

Comment utiliser

Étapes

  1. Glissez les fichiers dans la zone de dépôt, ou cliquez sur « Sélectionner des fichiers » pour les choisir — chaque ajout vient s'ajouter à la liste
  2. Réorganisez avec « Trier par nom / taille », ou utilisez les flèches haut/bas de chaque ligne pour ajuster finement
  3. Configurez les règles dans les trois cartes : préfixe/suffixe, recherche-remplacement, numérotation, casse, extension
  4. La colonne « Nouveau nom » se met à jour en direct — bleu signifie qu'il diffère de l'original, rouge qu'il entre en collision avec un autre fichier
  5. Cliquez sur « Télécharger ce fichier » pour enregistrer un fichier individuel, ou « Télécharger en ZIP » pour tout récupérer d'un coup

Ordre des règles

  • D'abord remplacer le nom de base (laisser vide pour conserver l'original) — utile lorsque vous voulez que chaque fichier finisse par exemple en « photo » plus un numéro de séquence, indépendamment de son nom d'origine
  • Ensuite, la recherche-remplacement s'applique uniquement au nom de base, jamais à l'extension
  • La numérotation s'insère ensuite, en préfixe, suffixe, ou en remplacement complet du nom de base
  • Le préfixe et le suffixe enveloppent le résultat
  • La transformation de casse et le traitement de l'extension viennent en dernier ; l'extension est traitée indépendamment

Cas d'utilisation

Organiser des exports de photos d'appareil photo / téléphoneLes noms par défaut comme DSC_0001.JPG ou IMG_1234.JPG ne portent aucune signification sémantique. Ajouter une date ou un préfixe thématique et un numéro de séquence rend les albums lisibles d'un coup d'œil. Activer « Extension en minuscules » évite les mélanges JPG/jpg qui cassent les systèmes de fichiers sensibles à la casse (Linux) lors d'une synchronisation depuis ceux qui ne le sont pas (Windows/macOS).
Nommage des ressources iOSLes exports de designers comme « icon-home @2x.png » et « icon-home @3x.png » peuvent être traités en lot vers « icon-home@2x.png » et « icon-home@3x.png » conformes aux conventions du Xcode Asset Catalog. Utilisez la recherche-remplacement pour supprimer les espaces, puis passez le nom de base en minuscules, afin d'éviter les échecs de chargement liés à la casse en production.
Normaliser les noms de drawables AndroidAndroid exige que les noms de ressources soient entièrement en minuscules, en snake_case, sans chiffre en tête. Des exports en casse mixte comme IcHomeActive.png ou ic-home-active.png peuvent être convertis en ic_home_active.png en une seule passe : remplacer `-` par `_`, mettre le nom de base en minuscules, mettre l'extension en minuscules. On attrape l'erreur de lint avant que le build ne le fasse.
Archiver les reçus/contrats par moisLes fichiers scannés comme scan001.pdf–scan100.pdf manquent de contexte d'archivage. Définissez le nom de base « 2026-06-recus- » avec une numérotation à 3 chiffres complétée par des zéros, vous obtenez « 2026-06-recus-001.pdf ». Trier par nom de fichier équivaut alors à trier par date, et un seul ZIP enveloppe le mois entier.
Standardiser les rushes média pour le montageLes monteurs ont souvent besoin de renommer des séquences multi-caméras par scène, par exemple GH010001.MP4 de GoPro → SceneA_take01.mp4. Utilisez le champ de nom de base pour effacer l'original, activez la numérotation, mettez l'extension en minuscules — tout le lot s'aligne alphabétiquement dans votre logiciel de montage pour faciliter la synchronisation multicaméra.
Supprimer les jetons sensibles ou redondants des noms de fichiersLes fichiers exportés portent souvent des suffixes comme (1), (copy) ou _final_v2_FINAL. La recherche-remplacement les nettoie d'un seul coup. Les fichiers contenant des codes client/projet peuvent être renommés en codes anonymes avant un partage externe. Tout se passe dans la mémoire du navigateur — les originaux ne quittent jamais l'appareil.
Normaliser les ressources statiques pour le WebAvant l'upload vers un CDN ou un stockage objet, normalisez les espaces, caractères non ASCII et lettres majuscules pour éviter les pièges d'encodage d'URL. Remplacez les espaces par des tirets, mettez le nom de base en minuscules, l'extension en minuscules — une seule passe produit des noms d'actifs conformes au SEO et sûrs entre systèmes.

Comment ça marche

L'outil entier s'appuie sur la File API du navigateur, Blob et URL.createObjectURL — chaque octet reste en mémoire. Quand vous déposez ou sélectionnez des fichiers, le navigateur transmet à JavaScript des objets File (sous-classes de Blob) sur le tas JS ; l'outil ne lit que la propriété `name` de chaque fichier pour le renommage, sans jamais toucher au contenu binaire. Les règles s'appliquent dans un ordre fixe pour éviter les interférences : d'abord le nom de base est déterminé (fourni par l'utilisateur ou base d'origine), avec l'extension séparée à lastIndexOf('.') (les fichiers cachés type .gitignore sont traités uniquement comme nom de base, sans extension) ; ensuite la recherche-remplacement s'effectue via String.prototype.split + Array.prototype.join (pas de regex — pour éviter une correspondance accidentelle de caractères spéciaux) ; puis le numéro de séquence est calculé via `String(start + i).padStart(pad, '0')` et placé en préfixe/suffixe/remplacement du nom de base ; le préfixe et le suffixe sont ensuite concaténés autour du résultat ; la transformation de casse s'applique alors à toute la chaîne préfixe+base+suffixe d'un seul coup ; l'extension est traitée indépendamment (conserver/majuscules/minuscules/remplacer). La détection des doublons compte chaque nouveau nom dans une Map<string, number> pendant l'aperçu ; les noms apparaissant plus d'une fois entrent dans un duplicateSet que l'interface met en surbrillance rouge. Cliquer sur « Télécharger en ZIP » alors que cet ensemble n'est pas vide affiche une notification d'erreur et interrompt l'empaquetage — la liste d'origine est préservée, il vous suffit d'ajuster les règles et de réessayer. Cela tourne dans useMemo([files, opts]), donc les modifications de règles recalculent de manière incrémentale sans refaire le rendu de la liste de fichiers. Le téléchargement individuel enveloppe le File dans URL.createObjectURL, déclenche un clic synthétique sur `<a download>` et révoque immédiatement l'URL. L'empaquetage ZIP importe dynamiquement JSZip au premier clic (~80 Ko, sans coût au premier rendu), lit l'arrayBuffer() de chaque fichier, l'écrit sous le nouveau nom et appelle generateAsync({type:'blob', compression:'DEFLATE', compressionOptions:{level:6}}). DEFLATE est la valeur par défaut de ZIP ; le niveau 6 équilibre ratio et vitesse. Le calcul des règles est en O(n) selon le nombre de fichiers ; le temps d'empaquetage évolue avec le total d'octets. Les navigateurs lisent généralement le contenu des File de manière paresseuse — arrayBuffer() est le moment où les octets quittent réellement le disque — donc même des milliers de fichiers en file d'attente ne coûtent presque rien pendant l'aperçu, le pic de mémoire n'arrive qu'au « Télécharger en ZIP ».

  • lastIndexOf('.') sépare l'extension ; si le seul point est à l'index 0 (par exemple .gitignore), le fichier n'a pas d'extension et le point initial reste dans le nom de base
  • La recherche-remplacement utilise String.prototype.split + Array.prototype.join au lieu de replaceAll, pour éviter une interprétation accidentelle de $1/$& dans la chaîne de remplacement
  • padStart(pad, '0') génère le numéro complété par des zéros ; pad=0 produit le numéro brut pour les cas où l'alignement n'est pas nécessaire
  • La transformation de casse s'effectue après que le préfixe et le suffixe aient été concaténés, ce qui normalise tout le segment de base d'un seul coup ; l'extension est traitée indépendamment
  • La détection des doublons s'exécute dans useMemo avec une Map ; recalcul O(n), et l'interface ne fait qu'échanger un className pour les lignes mises en surbrillance — pas de reconstruction du DOM
  • Les URL Blob sont révoquées immédiatement via URL.revokeObjectURL pour libérer le pool d'allocation d'URL, car les object URL réservées s'accumulent rapidement en cas d'usage intensif
  • JSZip est chargé via dynamic import uniquement quand l'empaquetage est déclenché, donc les ~80 Ko de code n'affectent jamais le premier rendu ni le LCP
  • Le niveau 6 de DEFLATE est le point d'équilibre côté navigateur ; le niveau 9 ajoute 1–2 % de compression pour 2–3× le temps et n'apporte presque rien sur les images/vidéos déjà compressées

Exemples

Préfixe + numérotation à 3 chiffres complétée par des zéros

Entrée: photo.jpg, sunset.jpg, beach.jpg
Règles: prefix=trip2026_, start=1, pad=3, position=after
Sortie:
trip2026_photo001.jpg
trip2026_sunset002.jpg
trip2026_beach003.jpg

Remplacer entièrement le nom de base

Entrée: GH010001.MP4, GH010002.MP4, GH010003.MP4
Règles: base=SceneA_take, start=1, pad=2, position=after, ext=lowercase
Sortie:
SceneA_take01.mp4
SceneA_take02.mp4
SceneA_take03.mp4

Supprimer un suffixe redondant via recherche-remplacement

Entrée: report_v1_FINAL.docx, summary_v1_FINAL.docx
Règles: find=_v1_FINAL, replace=(vide), case=lowercase
Sortie:
report.docx
summary.docx

Remplacer l'extension

Entrée: index.htm, about.htm, contact.htm
Règles: extension=replace, new ext=html
Sortie:
index.html
about.html
contact.html

Préfixe + espace en tiret + minuscules

Entrée: Banner Image.PNG, Hero Photo.JPG
Règles: prefix=web-, find=(espace), replace=-, case=lowercase, extension=lowercase
Sortie:
web-banner-image.png
web-hero-photo.jpg

FAQ

Mes fichiers sont-ils téléversés vers un serveur ?

Non. De l'ajout des fichiers à la production des nouveaux noms jusqu'à l'empaquetage du ZIP, tout s'exécute localement dans votre navigateur. Aucune requête de téléversement n'est effectuée. Vous pouvez le vérifier dans le panneau Réseau des DevTools de votre navigateur.

Pourquoi mon .gitignore / .bashrc n'est-il pas considéré comme ayant une extension ?

L'outil sépare au dernier point, mais si le seul point se trouve tout au début (un fichier caché), le nom entier est traité comme nom de base — cela évite de prendre un marqueur de préfixe caché pour une extension.

Que se passe-t-il si mes nouveaux noms entrent en collision ?

La liste d'aperçu met les doublons en surbrillance rouge et affiche un badge de comptage. Cliquer sur « Télécharger en ZIP » en présence de doublons est bloqué par un message d'erreur — votre liste de fichiers n'est pas perdue, il suffit d'ajuster les règles et de réessayer. Solutions courantes : activer la numérotation, augmenter la largeur du remplissage, ajouter un préfixe/suffixe.

Peut-il renommer des dossiers / préserver l'arborescence ?

Pas encore. La version actuelle gère une liste plate de fichiers unique. Pour un renommage en lot conscient des dossiers, renommez les fichiers ici puis assemblez l'arborescence avec l'outil ZIP Pack.

La recherche-remplacement prend-elle en charge les regex ?

Non. Elle utilise volontairement une correspondance de chaîne littérale (split-join), afin que les utilisateurs ne puissent pas déclencher accidentellement des jetons de chaîne de remplacement comme $1 ou $& dans leur champ de remplacement. La correspondance simple couvre la grande majorité des besoins de nettoyage.

Combien de fichiers peut-il gérer ?

Il n'y a pas de limite stricte sur le nombre — l'aperçu est essentiellement gratuit. L'empaquetage est borné par la mémoire du navigateur : pour des totaux très importants (plusieurs Go), l'allocation d'un seul Blob peut échouer ; dans ce cas, divisez vos fichiers en lots et empaquetez chaque lot séparément.

Le ZIP téléchargé affiche des noms non-ASCII corrompus. Pourquoi ?

JSZip écrit les noms de fichiers en UTF-8 par défaut, ce que les extracteurs modernes (Archive Utility de macOS, Explorateur Windows 11, 7-Zip, WinRAR 5+) lisent correctement. Les anciens Explorateurs Windows sur Win 7/8 peuvent encore mal décoder les noms non latins — utilisez 7-Zip ou Bandizip à la place.

Puis-je annuler un renommage si j'ai fait une erreur ?

Les renommages n'ont lieu qu'au moment du téléchargement — tant que vous ne cliquez pas sur « Télécharger en ZIP » ou « Télécharger ce fichier », les fichiers d'origine sur le disque restent intacts. L'aperçu est entièrement réversible : effacez les règles, modifiez-les, ou retirez des fichiers individuels de la liste. Si vous avez déjà téléchargé, ajustez simplement les règles et téléchargez à nouveau avec les mêmes fichiers source.