Renommer de nombreux fichiers sous Mac OS X, traitement par lots


57

J'avais l'habitude de renommer le fichier sous Linux via une commande de changement de nom:

rename 's/old_pattern/new_pattern/g' *glob

Y a-t-il quelque chose de similaire dans Mac OS X (Snow Leopard)?


L'article suivant explique comment installer renamesur Mac OS X: macosxhints.com/article.php?story=20050630022203488
Paul R

Les backticks n'apparaissent pas dans votre commentaire - vous devriez probablement ajouter ceci comme réponse ou éditer votre question pour inclure votre solution.
Paul R

1
La meilleure solution rapide que j'ai trouvée consiste à utiliser l'Automator intégré. Consultez cet article pour obtenir de l'aide étape par étape: tuaw.com/2008/11/11/…
lundi

Je voterais sur la réponse de nilay si ce n'était pas un commentaire ...
voidstate le

Réponses:


49

Avec Homebrew , un gestionnaire de paquets pour OS X:

brew install rename 

Ensuite, vous pouvez exécuter les mêmes renamecommandes que sous Linux.


3
Vous pouvez également utiliser le package MacPorts: installation du port p5-file-rename
Miquel Adrover

2
@MiquelAdrover: Mais avec le port, vous devez utiliser rename-5.22(où 22 est la version installée) au lieu derename
mems le

Vous pouvez renommer le lien symboliquesudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako

26

Utilisez judicieusement le pouvoir de ZSH (tapez zshle terminal si vous faites partie de ces pauvres âmes qui ne l'utilisent pas par défaut):

autoload zmv
zmv '(*).htm' '$1.html'

ZMV suit la syntaxe MMV .


mais cela permet-il également le remplacement de regex? Cela semble être juste une sorte de shell globbing amélioré.
mathématiques

4
@brubelsabs: Oui, zmv peut remplacer les expressions rationnelles . Pour les fichiers qui correspondent *user*.html, modifiez l'extension .htmlet toutes les occurrences de rcen final: zmv '(*user*).htm' '${1//rc/final}.html' @ghoppe: je pense que l' exemple de zmv dans votre réponse nécessite des -wparenthèses autour de son caractère générique.
Chris Johnsen

J'aime beaucoup cette suggestion car il n'est pas nécessaire d'installer quoi que ce soit sur un Mac (comme brasser), mais elle vous permet d'utiliser la syntaxe facile comme mmv.
Hay

+1 Nice. Couple de différences de regexs que je suis habitué à: 1) utiliser *au lieu de .*tout obtenir. *?semble fonctionner comme non-gourmand .*?. 2) pour moi, ^et $pour le début et la fin de la chaîne a semblé lui faire correspondre à rien
user56reinstatemonica8

21

Clumsy moi:

for i in *.yourfiles; do mv "$i" "`echo $i | sed 's/old/new/g'`"; done 

Et si vous voulez l'utiliser comme je le fais souvent de cette façon:

rename 's/old/new/' *.files

Je recommande d'utiliser ce petit script dans ~ / bin / rename:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done

votre script ne fonctionne pas pour moi "renommer ACDC AC-DC ACDC *" résultat-> "ssed: ne peut pas lire ACDC: aucun fichier ou répertoire de ce type", j'ai installé rename util depuis linux et cela fonctionne maintenant
holms

5

Vous pouvez essayer d'installer MacPorts et installer le renameutilspaquet:

renameutils @ 0.10.0 (sysutils)

renameutils est un ensemble de programmes conçus pour rendre le changement de nom de fichier plus rapide et moins encombrant.


ce paquet n'a pas la commande "renommer".
juanpablo

1
Je n'ai pas dit que c'était le cas. qmvon dirait que ça fait le travail.
Lajuette

qmvest un excellent outil, bien que
nécessitant

4

Il existe différentes versions de renommer . On dirait que vous recherchez celui basé sur Perl.

Une version de cet utilitaire est fournie avec le module Perl File :: Rename . Vous pouvez l'installer avec quelque chose comme sudo cpan -i File::Rename.

Ou, vous pouvez utiliser le renommage du paquet perl de Debian . Ce n'est qu'un fichier à télécharger. Mettez-le où vous voulez et chmod pour qu'il soit exécutable.


Une alternative est l' outil zmv fourni avec zsh . Il n’a pas la même syntaxe, mais il est fourni avec votre système d’exploitation et il peut facilement prendre en charge de nombreux cas courants.


Le nom renommé est ce que cette question montre comme exemple.
Quack Quotote

2

Sur Mac, j'utilise gratuitement Aristotle Pagaltzis rename, qui, comme Debian, est basé sur Perl. Vous pouvez l'obtenir ici . Ou visitez ici pour le lire en premier - toujours une bonne idée.

Vous devez placer cela quelque part dans votre $PATHet le rendre exécutable ( chmod +x rename), puis vous êtes prêt à partir.


2

Cela ne devrait pas être difficile mais apparemment ça l'est. Exemple, je veux renommer tous les fichiers de l'extension de aiff à aifc.

find . -iname "*.aiff" -exec bash -c 'mv "$0" "${0%\.aiff}.aifc"' {} \;

1

Si vous recherchez une interface graphique, essayez Name Mangler . Il a une fonctionnalité "aperçu" qui montre ce qui se passera si vous suivez le renommage.


1

la commande équivalente dans renamer (multiplate-forme) est

$ renamer --regex --find 'old_pattern' --replace 'new_pattern' *glob

0

Si vous aimez le multisélection de Sublime Text, vous pouvez l'utiliser avec qmv:

qmv --editor = "/ usr / bin / s3 -w" fichiers


0

Je me suis contenté d'aller de l'avant et de trouver mon préféré, perl-rename, que j'ai vu, donnant la renamecommande suivante: où aide ressemble à ceci:

Usage: rename [-v] [-n] [-f] perlexpr [filenames]

C'est comme ça que je sais que j'ai celui que j'aime.

Pour Mac, même dans Homebrew, il en existe d’autres où je me souviens vaguement d’avoir eu des problèmes. Donc, ce n'est pas le renamepaquet, et ce n'est pas non plus le renameutilspaquet nongnu .

Je l'ai obtenu à partir d'ici et vient de faire l'installation comme ils le mentionnent: https://github.com/subogero/rename

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.