Cambiar el nombre de muchos archivos en Mac OS X, procesamiento por lotes

57

Solía ​​cambiar el nombre del archivo en Linux a través de un comando de cambio de nombre:

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

¿Hay algo similar en Mac OS X (Snow Leopard)?

matemáticas
fuente
El siguiente artículo explica cómo instalar renameen Mac OS X: macosxhints.com/article.php?story=20050630022203488
Paul R
Los comentarios no aparecen en su comentario; probablemente debería agregar esto como respuesta o editar su pregunta para incluir su solución.
Paul R
1
La mejor solución rápida que he encontrado ha sido usar el Automator incorporado. Consulte este artículo para obtener ayuda fácil paso a paso: tuaw.com/2008/11/11/…
nilay
Votaría la respuesta de nilay si no fuera un comentario ...
voidstate

Respuestas:

49

Con Homebrew , un administrador de paquetes para OS X:

brew install rename 

Entonces puede ejecutar los mismos renamecomandos que en Linux.

Juan Pablo
fuente
3
También puede usar el paquete MacPorts: port install p5-file-rename
Miquel Adrover
2
@MiquelAdrover: Pero con el puerto que necesita usar rename-5.22(donde 22 es la versión instalada) en lugar derename
mems
Puede cambiar el nombre del enlace simbólicosudo mv /opt/local/bin/rename-XXX /opt/local/bin/rename
Ako
26

Usa el poder de ZSH sabiamente (escribe zshel terminal si eres una de esas pobres almas que no lo usan por defecto):

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

ZMV sigue la sintaxis de MMV .

ghoppe
fuente
pero ¿eso también permite el reemplazo de expresiones regulares? Esto parece ser solo un tipo de mejora de caparazón.
matemáticas
44
@brubelsabs: Sí, zmv puede hacer regexp de reemplazo . Para los archivos que coinciden *user*.html, cambie la extensión ay .htmlcambie todas las apariciones de rca final: zmv '(*user*).htm' '${1//rc/final}.html'@ghoppe: creo que el ejemplo zmv en su respuesta necesita -wo paréntesis alrededor de su comodín.
Chris Johnsen
Realmente me gusta esta sugerencia porque no necesitas instalar nada extra en una Mac (como brew), pero te permite usar la sintaxis simple de mmv like.
Hay
+1 Niza. Un par de diferencias con las expresiones regulares a las que estoy acostumbrado: 1) usar en *lugar de .*obtener todas. *?Parece funcionar como no codicioso .*?. 2) para mí, ^y $para el inicio y el final de la cadena parecía no coincidir con nada
user56reinstatemonica8
21

Torpe

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

Y si quieres usarlo como lo hago a menudo de esta manera:

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

Recomiendo usar este pequeño script en ~ / bin / rename:

#!/usr/bin/env zsh
SUBSEXPR=$1
shift
for i in $@; do mv $i `echo "$i" | sed $SUBSEXPR`; done
matemáticas
fuente
su script no funciona para mí "cambiar el nombre de ACDC AC-DC ACDC *" resultado-> "ssed: no puede leer ACDC: No existe tal archivo o directorio", instalé rename util de linux y ahora funciona de todas formas
holms
5

Puede intentar instalar MacPorts e instalar el renameutilspaquete:

renameutils @ 0.10.0 (sysutils)

renameutils es un conjunto de programas diseñados para hacer que renombrar archivos sea más rápido y menos engorroso

lajuette
fuente
este paquete no tiene el comando "renombrar".
juanpablo
1
No dije que sí. qmvParece que hace el trabajo.
lajuette
qmves una gran herramienta, aunque un poco demasiado trabajo para renombrado de expresiones regulares simples, es fantástico para nombrar y mover grandes cantidades de archivos arbitrarios de forma inteligente
sapht
4

Hay varias versiones de renombrar . Parece que estás buscando el basado en Perl.

Una versión de esta utilidad viene con el módulo File :: Rename Perl. Puedes instalarlo con algo como sudo cpan -i File::Rename.

O bien, puede ir con el cambio de nombre del paquete perl de Debian . Es solo un archivo para descargar. Póngalo donde quiera y modifíquelo para que sea ejecutable.


Una alternativa es la herramienta zmv que viene con zsh . No tiene la misma sintaxis, pero viene con su sistema operativo y puede solucionar fácilmente muchos de los casos comunes.

Chris Johnsen
fuente
el cambio de nombre perl es lo que esta pregunta muestra como ejemplo.
quack quijote
2

En Mac uso Aristóteles Pagaltzis, disponible gratuitamente rename, que al igual que Debian está basado en Perl. Puedes conseguirlo aquí . O visite aquí para leerlo primero, siempre es una buena idea.

Debe colocarlo en algún lugar de su $PATHy hacerlo ejecutable ( chmod +x rename) y luego estará listo para comenzar.

Telémaco
fuente
2

Esto no debería ser difícil, pero aparentemente lo es. Ejemplo, quiero cambiar el nombre de todas las extensiones de archivo de aiff a aifc.

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

Si está buscando una GUI, pruebe Name Mangler . Tiene una función de "vista previa" que muestra lo que sucederá si continúa con el cambio de nombre.

Peter Murray
fuente
1

el comando equivalente en renamer (multiplataforma) es

$ renamer --regex --find 'old_pattern' --replace 'new_pattern' *glob
Lloyd
fuente
0

Si te gusta la selección múltiple de Sublime Text, puedes usarlo con qmv:

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

Gordon Wells
fuente
0

Simplemente seguí adelante y encontré mi favorito que he visto llamado perl-rename dando el renamecomando donde la ayuda se ve así:

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

Así es como sé que obtuve el que me gusta.

Para Mac, incluso en Homebrew tienen otros en los que apenas recuerdo haber tenido problemas. Entonces no es el renamepaquete, y tampoco es el renameutilspaquete nongnu .

Lo obtuve desde aquí e hice la instalación como mencionan: https://github.com/subogero/rename

Pisis
fuente