El comando mv confunde el nombre del directorio con la opción de comando


12

Tengo un directorio llamado --pycache--, al cual necesito moverme __pycache__. Usar el mvcomando de la siguiente manera, me da el resultado listado. ¿Cómo puedo usar el CLIpara hacer lo que quiero?

$ mv --pycache-- __pycache__
/bin/mv: unrecognized option '--pycache--/'

Respuestas:


22

Este es un problema estándar con nombres de archivo / directorios que comienzan con símbolos menos convencionales. Su problema es que mv está tratando --pycache-- como nombre de opción largo (ya que comienza con -, también hay opciones cortas, comienzan con -). Consulte la página de manual de getopt para obtener detalles sobre las opciones largas y cortas.

La solución estándar en esta situación es usar un doble guión vacío , antes de todo argumento, que le dice al comando (mv en su caso, pero funcionará con otros, cp por ejemplo) que deje de tratar lo que sigue como opciones y lo trate como argumentos

Por lo tanto, su comando se convertirá en:

$ mv -- --pycache--/ __pycache__

y no fallará


8
buena respuesta, pero creo que quiere decir : le dice al comando que deje de tratar lo que sigue como opciones y lo trate como argumentos, no al revés.
RoundTower

1
Creo que es más portátil a anteponer ./: mv ./--pycache-- __pycache__.
Kevin

3
@ Kevin Eso funciona solo si el argumento es un nombre de archivo.
Starblue

16

Su primer carácter -es ambiguo para el mvcomando (o más bien, significa sin ambigüedad que le sigue un nombre de opción).

Intenta esto en su lugar:

mv ./--ppycache-- __pycache__

Fuente: linux.about.com


2
+1 para una solución alternativa que también funciona si el comando no es compatible -
Sverre Rabbelier
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.