8 votes

Renommer des fichiers/noms en masse, y a-t-il une solution plus intelligente?

J'ai quelques milliers de fichiers à renommer.

Le truc, c'est que j'ai les anciens noms de fichiers et les nouveaux noms de fichiers comme colonnes dans une feuille de calcul. Sans les renommer un par un. Y a-t-il un moyen de faire ça plus efficacement?

Toute aide est appréciée. J'ai essayé ce qui suit avec peu de satisfaction :

  • File Renamer - Cela me permet de renommer les fichiers spécifiés à partir d'une liste externe en .txt. Cependant, la version d'essai est limitée à 500 éléments. Je ne veux pas payer 20 $ juste pour ce travail manuel.

    Aurait pu les installer sur des ordinateurs séparés ou une machine virtuelle cependant.

  • Automator - Obtenir les éléments spécifiés > Renommer >

    Pas aussi efficace que je le pensais.

Je recherche juste une solution plus intelligente. Toute aide est appréciée

0 votes

Quelle version d'OSX? Finder dispose d'une méthode intégrée, bien que limitée, sur 10.4 et supérieur.

0 votes

Version de OSX : El Capitan

11voto

nohillside Points 82672
  • exportez dans un CSV (unicode UTF-8 ou tout autre encodage 8 bits, pas UTF-16) : deux colonnes, séparées par ; (en supposant qu'il n'y a pas de ; dans un nom de fichier)
  • ouvrez le Terminal
  • changez de dossier contenant les fichiers
  • exécutez perl -pi -e 's/\r\n/\n/;' LISTOFNAMES.csv pour corriger les problèmes de CRLF
  • exécutez while IFS=\; read old new; do mv "$old" "$new"; done < LISTOFNAMES.csv

PS : Cela écrasera les fichiers existants si le nouveau nom existe déjà.

PPS : Testez ceci d'abord sur un dossier temporaire avec seulement quelques fichiers (et assurez-vous d'avoir une sauvegarde récente)

0 votes

J'ai compris ce que tu veux dire, il suffit de les mettre dans UNE colonne (séparées par ;) J'ai essayé, ça marche.

0 votes

C'est le problème de fin de ligne CR/LF - le fichier a-t-il été créé sur une machine Windows - regardez la commande dos2unix

0 votes

La plupart des applications de tableur enregistrent les fichiers CSV exportés avec des sauts de ligne Windows sans terminer la dernière ligne. Encore pire, Excel sur un Mac enregistre par défaut les fichiers CSV avec des retours chariot à l'ancienne style Mac. Votre fichier CSV devrait être nettoyé en définissant les sauts de ligne sur la nouvelle ligne et en terminant la dernière ligne.

5voto

Hixi Points 343

J'ai trouvé que c'est l'une des façons les plus simples :

  • Dans une colonne de feuille de calcul, concaténer : "cp oldfilename newfilename" pour créer une copie avec le nouveau nom.
    • Utiliser "mv oldfilename newfilename" pour remplacer les anciens fichiers plutôt que de les copier.
  • Copier cette colonne concaténée dans un fichier texte et enregistrer sous rename.sh dans le dossier avec les fichiers à renommer.
  • Ouvrir le terminal, naviguer jusqu'au dossier avec les fichiers à renommer et exécuter bash rename.sh

2voto

Pierre Bernard Points 1008

Il y a quelques années, j'ai écrit un article de blog sur l'exécution d'opérations de fichiers en masse. La première étape consistait à copier la liste des fichiers à partir des résultats de recherche dans un tableur. Comme vous avez déjà le fichier de calcul, vous êtes très proche d'avoir un script qui peut procéder au renommage pour vous.

Supposons que vous ayez les anciens noms dans la colonne A et les nouveaux noms dans la colonne B.

Ecrivez ce qui suit dans la première cellule de la colonne C :

mv

Ecrivez ce qui suit dans la première cellule de la colonne D :

=concatenate("""",A1,"""")

Ecrivez ce qui suit dans la première cellule de la colonne E :

=concatenate("""",B1,"""")

Indiquez à l'application du tableur de "Remplir > En bas" les colonnes C, D et E.

Ensuite, copiez toutes les lignes de données des colonnes C, D et E. Collez le texte copié dans un éditeur de texte. Vous devriez obtenir une lecture de ligne comme ceci :

mv "ancien nom de fichier" "nouveau nom de fichier"

Cette commande va déplacer/renommer le fichier nommé "ancien nom de fichier" en "nouveau nom de fichier". Le fait d'entourer les noms de fichiers de guillemets permet de gérer les noms de fichiers contenant des espaces.

Si vous êtes satisfait des commandes, copiez-collez le texte complet dans le shell de Terminal.app

La procédure est certes moins élégante que d'avoir un script traiter votre tableur ou CSV. Cependant, elle a l'avantage de vous permettre de vérifier les commandes avant de les exécuter. Lorsque vous travaillez à partir des résultats de recherche, vous pouvez facilement obtenir des valeurs à partir d'autres colonnes (par ex : date de modification, dimensions de l'image, etc.) et les intégrer dans les nouveaux noms de fichiers.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X