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)?


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.


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 .


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

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


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.


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.


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"' {} \;

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.


1

el comando equivalente en renamer (multiplataforma) es

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

0

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

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


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.