Quiero mover el contenido de un directorio dentro de otro directorio con las mismas carpetas.
Aquí hay un ejemplo:
Tengo ./backup
que tienen los directorios base
y 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.
rsync
lugar, hará la fusión.Respuestas:
Aunque su página de manual no lo documenta,
mv
se 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, lomv
que 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 backupArchives
sin 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.php
Otra 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
sudo
comando después de la opción que decida usar.fuente
-R
seguramente no debería venir después del primer argumento. Las opciones (casi) siempre preceden a los argumentos del comando. Además,mv
no tiene-R
opción, y finalmente, la recursividad es irrelevante para amv
. @DimitrisTheodoridis, por favor prueba tu respuesta primero.Claro
rsync
que 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
backup
directorio si es necesarioNota 1: debe ir
cd
albackup
directorio antes de ejecutar elcp -R --parents ...
Nota 2: Verifique el
backupArchives
directorio 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
foo
ybar
que 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 empty
produce 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
foo
debar
en 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