bash - subdirectorios - mover todos los archivos de un directorio a otro en linux
Copie archivos de un directorio en un directorio existente (5)
Dependiendo de algunos detalles, es posible que deba hacer algo como esto:
r=$(pwd)
case "$TARG" in
/*) p=$r;;
*) p="";;
esac
cd "$SRC" && cp -r . "$p/$TARG"
cd "$r"
... esto básicamente cambia al directorio de SRC y lo copia al objetivo, luego regresa al punto de partida.
El alboroto adicional es manejar objetivos relativos o absolutos.
(Esto no depende de la semántica sutil del comando cp
sí ... de cómo maneja las especificaciones de origen con o sin un seguimiento / ... ya que no estoy seguro de que sean estables, portátiles y confiables más allá de solo GNU cp
y no sé si continuarán siéndolo en el futuro).
En bash necesito hacer esto:
tomar todos los archivos en un directorio
cópialos en un directorio existente
¿Cómo hago esto? Intenté cp -r t1 t2
(tanto t1 como t2 son directorios existentes, t1 tiene archivos) pero creó un directorio llamado t1 dentro de t2, no quiero eso, necesito los archivos en t1 para ir directamente dentro de t2 . ¿Cómo hago esto?
Lo que quieres es:
cp -R t1/. t2/
El punto al final le dice que copie los contenidos del directorio actual, no el directorio en sí. Este método también incluye archivos y carpetas ocultos.
Si quiere copiar algo de un directorio en el directorio actual , haga esto:
cp dir1/* .
Esto supone que no está intentando copiar archivos ocultos.
cp -R t1/ t2
La barra inclinada del directorio de origen cambia ligeramente la semántica, por lo que copia los contenidos pero no el directorio en sí. También evita los problemas con los archivos globbing e invisibles que tiene la respuesta de Bertrand (copiando t1/*
pierde archivos invisibles, copia `t1 / * t1 /.* ''copias t1 /. Y t1 / .., que no desea) .
cp dir1/* dir2
O si tiene directorios dentro de dir1 que también quisiera copiar
cp -r dir1/* dir2