No se puede cambiar el nombre de un archivo cuyo nombre comienza con un guión


37

Estoy tratando de cambiar el nombre de un archivo con un guión al comienzo de su nombre y esto:

mv -example-file-name example-file-name

y esto:

mv '-example-file-name' example-file-name

resulta en:

mv: invalid option -- 'e'

1
Utilice la ruta relativa del archivo (./tmp/-example), la ruta completa (/ home / a / tmp / -example) o dígale a mv que ha terminado de dar opciones con - y que lo que sigue son archivos nombres
Ярослав Рахматуллин

En caso de que alguien se pregunte: mv *example-file-name example-file-nametiene el mismo problema, porque antes mvse llama a la expansión del nombre de archivo (AKA globbing) .
Walter Tross

Respuestas:


53

La mayoría de los comandos de GNU / Linux permiten que una --opción indique el final de las opciones para que las -palabras prefijadas posteriores no se traten como opciones.

  mv -- -example-file-name example-file-name

Una pequeña prueba

$ touch -- -example
$ ls -l -- *ample
-rw-r--r-- 1 rgb rgb 0 Nov 25 09:57 -example
$ mv -- -example example
$

Esto también resuelve el mismo problema rename. (al menos la versión que funciona rename [options] <expression> <replacement> <file>..., cualquiera que sea)
underscore_d

Maldición, BSD / Mac OS X mvno tiene esto :(
Sridhar Sarnobat

18

La respuesta de RedGrittyBrick es muy buena. Otra opción es:

mv ./-example-file-name example-file-name

Una pequeña prueba:

$ touch ./-example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./-example
$ mv ./-example example
$ ls -l ./*ample
-rw-r--r-- 1 me me 0 Nov 25 16:02 ./example

muy buena solución, esto nunca se me ocurrió. Y a diferencia de la respuesta aceptada, esto funcionará en BSD / Mac OS X
Sridhar Sarnobat

Eso es un poco más pegadizo que --.
Corni

-1

Puedes usar esto:

rename -- "s/\-//g" *

que puede cambiar el nombre de todos los archivos :) si su nombre de archivo:

-ng--sh-ay-01[------------]-FLV

después de ejecutar el código, su nombre de archivo se convierte en:

ngshay01[]FLV

1
Los otros enfoques (el de RedGrittyBrick y gniourf_gniourf) tienen más probabilidades de funcionar con varios otros comandos.
TOOGAM

-1

Este truco me funciona en tiempos de desesperación. YMMV

rename \- '' *

Tienes que escapar del guión para cambiar el nombre para reconocerlo. Por qué renombrar no respeta comillas simples u ofrecer una anulación de algún tipo está fuera de mi alcance.

Este es el único método que he visto que maneja de manera confiable un guión inicial usando renombrar. Estoy de acuerdo con las otras publicaciones sobre el uso de mv, pero si no puede usar mv por alguna razón, esto funciona.

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.