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 -)