¿Cómo se mueven todos los archivos y subdirectorios de una carpeta a otra? El comando mv no mueve ningún subdirectorio

¿Cómo se mueven todos los archivos y subdirectorios de una carpeta a otra? El comando mv no mueve ningún subdirectorio

Solo quiero mover y sobrescribir todos los archivos y carpetas, incluidos los subdirectorios y sus archivos, a otra carpeta y su subcarpeta.

Probé los siguientes comandos, pero no funcionan en el subdirectorio y sus archivos.

mv -f fromA/* toB/

mv -f fromA/{,.}* toB/

Entonces, todos los archivos de la carpeta A se mueven a la carpeta B, pero no A/sub a B/sub.

Recibo un error, no se puede mover 'deA/subA' a 'aB/subB': el archivo existe

Funciona si reviso cada carpeta una por una, pero estoy seguro de que me falta algo. He visto la mayoría, si no todas, las respuestas relacionadas, pero ninguna funciona aquí.

Respuesta1

info mvtiene esto:

   _Note_: 'mv' will only replace empty directories in the destination.
Conflicting populated directories are skipped with a diagnostic.

No hay opción para anular eso, al menos eso parece. Elimine B y cambie el nombre de A (de nuevo a B), o vacíe/elimine los directorios en B manualmente primero.

Respuesta2

recomiendo usarrsync

Con rsync, puede especificar que desea que se eliminen los archivos e incluso puede hacer un "ensayo" para ver exactamente qué sucedería si lo ejecutara de verdad.

Intentar

rsync -av --dry-run --delete-before fromA toB

--delete-before es excelente para fusionar archivos en sistemas con poco espacio. Si está satisfecho con el ensayo, elimine la --dry-runopción.

Recomiendo mirar la página de manual para ver todas las diferentes opciones de "eliminar" para que pueda determinar cuál podría ser mejor para usted.

Si desea eliminar todos los archivos en el destino que no están relacionados con la mudanza, puede usar la --delete-excludedopción. Nuevamente, use --dry-runpara verificar qué se eliminará antes de ejecutarlo.

Hay un --remove-source-filesmétodo que eliminará los archivos fuente durante la transferencia (como lo haría mv) pero no eliminará los directorios. Por lo tanto, aún tendrás que eliminar los directorios de origen conrm

Respuesta3

Según su afirmación de que recibe un error de que el archivo ya existe, ¿ya tiene carpetas y archivos en 'toB'? Si principalmente desea fusionar los archivos de 'fromA' a 'toB', entonces probablemente sea mejor simplemente copiar los archivos de forma recursiva (cp -ar) y luego eliminar 'fromA'.

De lo contrario, si 'toB' inicialmente debería estar vacío y solo desea asegurarse de que el contenido de 'toB' sea el mismo que el de 'fromA':

$ rm -rf toB
$ mv fromA toB

información relacionada