Automatiser le changement de nom de fichier sous OSX

0

Exemple: nous avons un dossier contenant 30 images avec des noms incohérents. Ces images doivent être nommées de manière cohérente et numérique: image1.jpg image2.jpg image3.jpg ... image30.jpg Cette opération peut-elle être automatisée?

Fresheyeball
la source
Et sur quel critère les fichiers seraient-ils nommés? Comment choisissez-vous la séquence?
Slhck

Réponses:

4

Hazel surveille les modifications dans les dossiers et peut renommer les fichiers récemment ajoutés. Commercial avec démo complète.

Hazel surveille les dossiers auxquels vous lui indiquez, organisant automatiquement vos fichiers en fonction des règles que vous créez. Il dispose d'une interface de règle similaire à celle d'Apple Mail, vous vous sentirez donc chez vous. Demandez à Hazel de déplacer les fichiers en fonction du nom, de la date, du type, de l'adresse de site ou de l'adresse e-mail d'où ils proviennent (Safari et Mail uniquement) et bien plus encore.

Capture d'écran


Name Mangler est un utilitaire de changement de nom de fichier. Il suffit de glisser-déposer des fichiers dans la fenêtre du programme et de définir les règles. L'aperçu montre comment les fichiers seront nommés par la suite. Commercial avec démo complète.

Le Finder est bon pour beaucoup de choses, mais renommer beaucoup de fichiers n'en fait pas partie. Entrez Name Mangler, qui simplifie toutes les tâches de changement de nom de fichier.

Capture d'écran


Votre Mac est livré avec Automator , un outil vous permettant de créer des workflows .

Avec Automator, vous pouvez automatiser une grande partie de ce que vous faites avec votre ordinateur. Créez et imprimez un répertoire familial avec les contacts de votre carnet d'adresses. Recherchez et ajoutez des images de vos sites Web préférés à iPhoto. Imprimez vos documents sur votre iPad. Renommez instantanément des dizaines de fichiers dans le Finder.

Lancez-le et sélectionnez pour créer un nouveau flux de travail . Dans la bibliothèque, ajoutez une action Obtenir les éléments du Finder spécifiés et une action Renommer les éléments du Finder (ne créez pas de copies des fichiers lorsque cela vous est demandé). Déposer et déposer des fichiers sur la première action pour les ajouter au flux de travail. Configurez le second comme indiqué pour rendre séquentiel avec un nouveau nom et séparés par rien . Exécuter en appuyant sur le bouton "Play" dans la barre d’outils.

Capture d'écran


Pour ce faire, à partir de la ligne de commande bash, entrez le répertoire parent et exécutez la commande suivante:

declare -i C=1 ; for file in *.jpg ; do mv "$file" "image$C.jpg" ; C=C+1 ; done
Daniel Beck
la source
Il y a aussi Renamer (renamer.com) et A Better Finder Rename ( publicspace.net/ABetterFinderRename )
Karolos
@slhck J'y ai pensé, mais il semble ne s'agir que de noms séquentiels, l'autre de la normalisation des extensions de fichiers. La solution Automator ne fonctionnerait pas là. Peut-être qu'il est temps de poser une question canonique «Je veux renommer des fichiers par lots»?
Daniel Beck
Avec le traitement complet Automator? Serait bien. Ou en faire un article de blog;)
slhck
Que diriez-vous de la ligne de commande? Dois-je vraiment avoir affaire à une autre application et à une interface utilisateur pour y parvenir?
Fresheyeball
2

Vous pouvez utiliser une commande shell comme ceci:

i=1;for f in *;do echo mv "$f" image$((i++)).jpg;done

Supprimer echosi la sortie semble correcte.

Une autre option consiste à exécuter brew install rename, puis exécuter rename -n '$_=$N.".jpg"' *. Supprimer -nsi la sortie semble correcte. $Nest le numéro de fichier à partir de 1, $_la ligne en cours et .est utilisé pour la concaténation de chaînes en Perl.

Plus d'exemples:

i=1;for f in *;do mv "$f" $(printf %03d $i).jpg;let i++;done
i=1;for f in *;do mv "$f" $(printf %03d $i).${f##*.};let i++;done
IFS=$'\n';i=1;for f in $(ls -rt);do mv "$f" "$((i++)) $f";done
for f in *.mp3;do mv "$f" "$(printf %02d ${f%% *}) ${f#* }";done
for f in *;do b=${f%.*};x=${f#*.};mv $f ${b%-*}-$(printf %03d ${b#*-}).$x;done
shopt -s extglob;for f in !(*.*);do mv $f $f.txt;done
for f in *;do mv "$f" "${f//[^a-zA-Z0-9.]}";done
rename 's/.*ep(..).*/Example EP$1 720p HDTV x264.srt/' *.srt

${f##*.}supprime le *.motif le plus long au début et ${f%.*}supprime le .*motif le plus court à la fin. ${f//[^a-zA-Z0-9.]}supprime tous les caractères sauf [a-zA-Z0-9.].

Lri
la source
Vous pouvez également utiliser quelque chose comme ruby ​​-e 'Dir ["*. Png"]. Each_with_index {| f, i | File.rename (f, "prefix # {i} .png")} 'Parfait!
Philip
1

Réponse Driveby, au cas où quelqu'un atterrirait sur cette page à l'avenir: Yosemite (OSX 10.10) a ajouté le renommage par lots au chercheur, de sorte qu'il ne lui reste plus qu'à faire pour effectuer ces opérations, car OP sélectionne tous les fichiers qui doivent être renommés, à droite. / Ctrl-cliquez dessus, puis sélectionnez Rename X items....

mccc
la source