Estoy tratando de encontrar un directorio particular en una ruta y mover el directorio a otra ruta usando buscar.
El directorio de origen se parece a continuación,
/Dir1/country1/month1/date1,date2,date3
/Dir1/country2/month1/date1,date2,date3
...
.
.
/Dir1/country10/month1/date1,date2,date3
Estoy intentando encontrar el directorio date1 y moverme al destino.
/Copia de seguridad/fuente1/Dir1/
Estoy usando el siguiente comando
[root@mytest Dir1]# buscar -nombre "fecha1" -exec mv {} /Backup/source1/Dir1/{} \;
y obtengo el siguiente error.
mv: no se pudo conservar la propiedad de `/Backup/source1/Dir1/./country1/month1/date1/date1/date1_1.txt': operación no permitida
No estoy seguro de cómo eliminar la duplicación del directorio date1 en el destino y"./"también está creando problemas.
Mis mejores deseos, KJ
Respuesta1
ElPágina de manual de Linuxestados:
mv - mover (cambiar nombre) archivos
Por lo tanto, no puede utilizar mv
para mover un directorio. Sin embargo, primero puede copiarlo y luego borrar la copia anterior. Este comando
SRC_DIR=$(find . -type d -name date1 -print); echo $SRC_DIR
almacenará la ruta relativa al directorio que le interesa, en una variable conveniente. Ahora podemos hacer el directorio en la nueva posición,
mkdir /Backup/source1/$SRC_DIR
siempre que tenga la autoridad para hacerlo: de hecho, el mensaje de error anterior se refiere a que no tiene privilegios suficientes para crear un nuevo archivo (debería haber sido una carpeta, pero se convirtió en un archivo debido al error anterior). ¿Está seguro de que el nuevo /Backup/dir1 le pertenece? Deberías comprobarlo y solucionarlo.
Ahora puedes copiar recursivamente todo el contenido al nuevo directorio:
cp -R $SRC_DIR/* /Backup/dir1/$SRC_DIR
cp -R $SRC_DIR/.[a-Z]* /Backup/dir1/$SRC_DIR
y por último, puedes borrar la copia anterior, si es necesario:
cd $SRC_DIR
rm -fR *
rm -fR .[a-Z]*
y ahora el directorio está vacío y se puede borrar.
Respuesta2
En lugar de usar move, que es una herramienta contundente, consulte rsync, que puede cambiar los árboles de directorios en modo archivo, lo que conserva los permisos y los enlaces simbólicos tanto físicos como físicos.
Además, si escribe updatedb
como root, actualizará la locate
base de datos de archivos que se encuentran en los distintos árboles de rutas de los paquetes instalados. Binarios, páginas man y árboles fuente. Buscar con whereis
o locate
es mucho más rápido que realizar la búsqueda en el disco real cada vez.