¿Cómo puedo cambiar el nombre de muchos archivos usando una expresión regular?


20

Quiero cambiar el nombre de muchos archivos en Mac OS X (10.7.2). No tengo el paquete perl para el renamecomando.

Mis archivos tienen nombres como "T452-102456-0.png" y quiero eliminar la parte "-0". Sé que puedo hacer esta acción escribiendo mi propio script php-cli, pero me gustaría conocer una solución más fácil y rápida.


¿No existe una contradicción lógica entre “muchos archivos pdf” y “Mis archivos tienen nombres como" T452-102456-0.png "”?
manatwork el

Oh ... el tipo de archivos no importa, pero es cierto ^^. Edito, gracias por tu comentario =)
Raphaël

Respuestas:


21

Bash o Ksh junto con mvpodrían resolverlo:

for f in *.png; do mv -n "$f" "${f/-0}"; done

En caso de que el nombre del archivo también tenga "0" después del primer guión y el "-0" esté siempre delante del punto, puede incluir ese punto también en la expresión:

for f in *.png; do mv -n "$f" "${f/-0./.}"; done

Pero como esa regla de cambio de nombre es simple, si tiene renameel paquete util-linux , eso también lo hará:

rename '-0.' '.' *.png

Funciona perfectamente. Muchas gracias =)
Raphaël

3

Método simple: archivos en el directorio actual solamente

Con zsh:

autoload zmv
zmv '(*)-0(.png)' '$1$2'

Con otras conchas:

for x in *-0.png; do mv -- "$x" "${x%-0.*}.png"; done


Método mejorado: archivos en el directorio actual y / o subdirectorios

Con zsh:

zmv '(**/)(*)-0(.png)' '$1$2$3'

Con ksh93:

set -o globstar
for x in **/*-0.png; do mv -- "$x" "${x%-0.*}.png"; done

Con bash ≥4, como arriba, pero use en shopt -s globstarlugar del setcomando.

Con otras conchas:

find -name '*-0.png' -exec sh -c 'for x; do mv -- "$x" "${x%-0.*}.png"; done' _ {} +

Otra gran razón para instalar zsh:) .... zmv
danidee


0

Si tienes el mmvpaquete:

mmv '*-0.png' '#1.png'

Al igual que (versiones recientes de) rename, esto tendrá mucho cuidado para evitar sobrescribir los archivos existentes.

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.