2009-05-15 23 views
23

Mi viejo y nuevo directorio tienen las mismas carpetas y archivos dentro.Comando de Linux para mover un directorio

Trato:

mv -if old/* new/* 

y obtener el error

MV: No se puede mover `./xxxxxx' a un subdirectorio del mismo

¿Cómo se puede mover a ella?

+10

Este es una pregunta perfectamente válida que pertenece a StackOverflow. De acuerdo, es un error ingenuo, pero para eso está SO; ayuda a las personas a superar la ingenuidad al permitirles hacer preguntas y aprender de las respuestas. Vea SO Blog y Podcast # 53 (Joel dice que ninguna pregunta es demasiado simple para Stack Overflow ...). –

+0

Pero no es una pregunta de programación. ¿No pertenece a ServerFault? –

+0

¡ServerFault todavía está en versión beta privada! – alamar

Respuesta

29

Debe usar mv -if old/* new/ sin el final *.

Esto se debe a que desenrolló a

mv -if old/foo old/bar old/baz new/foo new/bar new/baz 

es decir, trasladar todo a nuevo/Baz

Esto no es lo que quería.

+0

Cometí un error por escrito. mv -si antiguo/* nuevo/ no funciona – Qooe

+2

'No funciona' es inútil. ¿Qué dice? ¿Qué pasa cuando lo intentas? – alamar

5
[email protected]:/tmp/experiment$ ls a 
11 22 33 
[email protected]:/tmp/experiment$ ls b 
22 33 
[email protected]:/tmp/experiment$ ls 
a b 
[email protected]:/tmp/experiment$ mv a/* b 
[email protected]:/tmp/experiment$ ls a 
[email protected]:/tmp/experiment$ ls b 
11 22 33 

Funciona. ¿Qué estás intentando lograr? ¿Podría por favor escribir un breve ejemplo de cómo deberían ser los datos de entrada y cómo deberían ser los datos de salida? La verdad es que no tengo idea de lo que estás tratando de hacer :) Ayúdame a ayudarte.

1

Si está copiando de un sistema de archivos ext2/3/4 a un sistema de archivos FAT32, y un nombre de archivo tiene un carácter no válido para las convenciones de nombres FAT32, este mensaje de error es terriblemente molesto e incorrecto. ¿Cómo puedo saber? Luché con este error, sí, es un ERROR DE KERNEL, durante 6 horas antes de que me diera cuenta. Pensé que era un error de intérprete de shell, pensé que era un error "mv". Probé varias conchas diferentes, todo. Pruebe este experimento: en un sistema de archivos ext, "toque" a: b '"them" mv "en un sistema de archivos FAT32. Pruébalo, disfrutarás (detestarás) los resultados. Lo mismo es cierto para '<' y '>' (\ 074 y \ 076).

Gracias por "man mv": es una gran ayuda, no abandone su trabajo diario.

1

Podría ser que obtuviera la respuesta, pero la respuesta anterior no funciona para mí ... y finalmente mucha investigación obtuve la respuesta. (El problema se debe a la propiedad de archivos)
y acaba de poner sudo antes del comando y su funcionamiento .... :) Lo mismo para el comando cp y mv.

sudo mv -if old/* new/ 
2

nota que mv a * b/no mueva los archivos */(nombre de archivo comienza con '') en un/ab/

por ejemplo:.

$ mkdir -p a/d b && touch a/f a/.f a/d/.f 
$ mv a/* b/ 
$ ls -a a/ 
. .. .f 
Cuestiones relacionadas