Quiero mover el contenido de un directorio dentro de otro directorio con las mismas carpetas.
Aquí hay un ejemplo:
Tengo ./backupque tienen los directorios basey test. Ahora quiero mover estos directorios ./backupArchives.
Yo uso esto:
mv ./backup/* ./backupArchives
pero recibí el error
mv: cannot move './backup/base' to './backupsArchive/base': Directory not empty
Intenté usarlo --force, pero no tuve suerte. ¿Hay alguna forma de moverlo cuando las carpetas ya existen?
Nota: Solo quiero fusionar contenidos, no hay sobrescritura.

rsynclugar, hará la fusión.Respuestas:
Aunque su página de manual no lo documenta,
mvse negará a cambiar el nombre de un directorio a otro directorio si el directorio de destino contiene archivos. Esto es algo bueno en su caso porque resulta que desea fusionar el contenido de la fuente en el destino, lomvque no funcionará.Usar en su
rsync -a backup/ backupArchives/lugar. Después de esorm -rf backup/*.En lugar de usar
rsync, también puedes hacer el clásicoque te da más puntos geek.
fuente
rm -rf backupArchivessin consecuencias, y mucho menos las 'horribles'.sudo sh -c '(cd backup && tar c .) | (cd backupArchives && tar xf -)'Rápido y sucio, si sabes lo que estás haciendo:
fuente
Después del directorio que mueve, necesita
*(representa cualquier texto o número). Por ejemplo:eso es todo, si mueve archivos, entonces se mueve como:
mv /var/www/index.php /recovery/index.phpOtra forma es empaquetar el contenido de esa carpeta usando tar:
Luego muévelo a cualquier otro archivo. También recomiendo este paso porque el alquitrán lo comprime y lo hace más pequeño.
Para extraer los archivos a otra carpeta, use
Si necesita copiar en una ubicación que no le pertenece, asegúrese de anteponer su comando con el
sudocomando después de la opción que decida usar.fuente
-Rseguramente no debería venir después del primer argumento. Las opciones (casi) siempre preceden a los argumentos del comando. Además,mvno tiene-Ropción, y finalmente, la recursividad es irrelevante para amv. @DimitrisTheodoridis, por favor prueba tu respuesta primero.Claro
rsyncque funciona, pero esto podría funcionar también para máquinas que no son compatiblesrsync(es decir, en cpanel, que rsync no está instalado de manera predeterminada).¿Qué pasa con el uso:
Luego elimine el
backupdirectorio si es necesarioNota 1: debe ir
cdalbackupdirectorio antes de ejecutar elcp -R --parents ...Nota 2: Verifique el
backupArchivesdirectorio si obtuvo los archivos nuevos de la copia de seguridad.fuente
Antes de hacer la pregunta, consideremos un caso simplificado.
Supongamos que en / home / admin tenemos dos carpetas
fooybarque tienen la misma estructura de subdirectorio, pero cada una contiene diferentes archivos. Ahora queremos fusionarlos en uno. Cuando hacemos cosas comomv foo/* bar, semv: directory not emptyproduce el error .Mi solución es renunciar a las herramientas de línea de comandos y cambiar a un administrador de archivos GUI, por ejemplo, dolphin. Cuando cambia el nombre
foodebaren dolphin, le da la opción de escribir en la carpeta de destino y le pregunta si desea sobrescribir los archivos existentes de forma interactiva. Esto evita copiar y eliminar, lo que en efecto ahorra tiempo sin una sola línea de código.PD: no probé todos los administradores de archivos que hay. Pero la mayoría de ellos debería tener esta característica.
fuente