2 votos

Al renombrar varios archivos con mv aparece el mensaje "zsh: no se han encontrado coincidencias: *.pdf"

Así que tengo estos archivos:

 Movies % ls -l *."pdf - yts"
-rw-r--r--@ 1   staff  1848890 Mar 18 00:11 Scanned Document 1.pdf - abc
-rw-r--r--@ 1   staff  1848890 Mar 18 00:11 Scanned Document 2.pdf - abc
-rw-r--r--@ 1   staff  1848890 Mar 18 00:11 Scanned Document 3.pdf - abc
-rw-r--r--@ 1   staff  1848890 Mar 18 00:11 Scanned Document 4.pdf - abc
 Movies %

y necesito renombrar las extensiones de .pdf - abc sólo .pdf .

Probé esto:

mv *."pdf - yts" "*.pdf"

pero tengo este error:

zsh: no matches found: *.pdf

¿Hay alguna frase que pueda utilizar aquí? ¿O mi comando no está formateado correctamente?

6voto

Michael Zhou Puntos 167

Esta solución utiliza zsh 's zmv -

Navegue hasta el directorio donde se encuentran estos archivos y cargue zmv .

autoload zmv

Compruebe los resultados de zmv utilizando el -n opción.

zmv -n '(*).pdf - abc' '$1.pdf'

Retire el -n si los resultados son los deseados.

5voto

NuclearFission Puntos 151

Existe una utilidad llamada rename que puede instalar que hará precisamente esto.

rename "pdf - abc" "pdf" *."pdf - abc"

Si no está en su sistema, puede instalarlo con brew install rename . Hay algunos paquetes en los que renombrar se llama rename.ul

Observa que en tus comentarios has utilizado la cadena "yts", pero en tu listado de ejemplo aparece "abc".

4voto

siva Puntos 23

mv -h (help) muestra el uso de mv:

usage: mv [-f | -i | -n] [-hv] source target
       mv [-f | -i | -n] [-v] source ... directory

Esto demuestra mv toma una fuente y un destino, o una o más fuentes y un directorio de destino.

Si su orden tuviera éxito, equivaldría a

mv Scanned Document 1."pdf - yts" Scanned Document 2."pdf - yts" Scanned Document 3."pdf - yts" Scanned Document 4."pdf - yts" "*.pdf"

Esto intenta mover los 4 documentos al directorio "*.pdf" que no existe, de ahí el error.


Para cambiar el nombre de varios archivos a varios destinos, puede utilizar una función for bucle.

for file in *."pdf - abc"; do mv "$file" "${file/ - abc/}"; done
  • for file in *."pdf - abc"; do …; done corre con $file a cada fichero resultante del glob *."pdf - abc" .
  • ${file/ - abc/} encuentra - abc en el $file y lo sustituye por quitándolo.

Usted también no es necesario utilizar la línea de comandos para esto .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X