ver varios todos subdirectorios servidor pegar otro mover los listar eliminar directorios directorio desde copiar contenido archivos archivo linux makefile install

varios - mover todos los archivos de un directorio a otro en linux



¿Cuál es la mejor manera de mover un directorio en su lugar en una instalación de Makefile? (3)

Actualmente estoy usando la técnica habitual en mi Makefile para instalar archivos individuales:

install: install -D executable ${BIN_DIR}

Pero me encontré con una situación en la que necesito mover un directorio completo y todos los archivos debajo de él a su lugar.

¿Es cp -r la mejor manera o hay una forma más de Linux-y / Unix-y para hacer esto?


La vinculación es otra alternativa viable. Eso le permitiría tener acceso a múltiples directorios (que representan diferentes versiones).


Mi versión de install(1) (Debian) tiene:

-d, --directory treat all arguments as directory names; create all components of the specified directories -t, --target-directory=DIRECTORY copy all SOURCE arguments into DIRECTORY

Entonces, si quisieras usar install(1) consistentemente a lo largo de tu Makefile, podrías hacer:

install -d destdir install srcdir/* -t destdir

-t no es recursivo, sin embargo, si srcdir contiene directorios, entonces no se copiarán.


Sí, es difícil pensar en una forma más unix-ish que cp -r , aunque el -r es una adición relativamente tardía a cp . Puedo decirte de la manera en que solíamos hacerlo, y eso funciona perfectamente en los sistemas de archivos y cosas por el estilo:

Deje que src sea ​​el directorio de origen que desea mover, y /path/to/target sea ​​una ruta de acceso absoluta al destino. Entonces puedes usar:

$ tar cf - src | (cd /path/to/target; tar xf -)