Estoy tratando de copiar archivos y subcarpetas de la carpeta A sin la A en sí. Por ejemplo, una carpeta contiene el siguiente:
| file1.txt
| file2.txt
| subfolder1
Ejecutar el siguiente comando me da un resultado incorrecto:
sudo cp -r /home/username/A/ /usr/lib/B/
El resultado es
/usr/lib/B/A/...copied files...
en lugar de..
/usr/lib/B/...copied files...
¿Cómo puedo llegar al esperado sin la carpeta de origen?
bash
command-line
cp
pushandpop
fuente
fuente
A/*
tiene sentido, pero hay situaciones en las que no funciona.shopt
Esbash
específico. Conzsh
, uso*(D)
. conksh93
,FIGNORE='@(.|..)'
.cp -t
es específico de GNU. Elfind
uno no funcionará correctamente, ya que copiará ambosA/
y su contenido (incluidas las subdirecciones) varias veces.-maxdepth 1
(-mindepth
y-maxdepth
ser extensiones GNU ahora también es compatible con algunos otros. Portablementefind .../. ! -name . -prune -exec ....
)find .../.
Causa un error aquí.Si está en un sistema GNU, de
man cp
:Esto le permite escribir
cp -rT /home/username/A/ /usr/lib/B/
para hacer exactamente lo correcto.fuente
cp
. Pero eso es cierto que-T
no funcionará con un no GNUcp
.Indique
cp
que copie el contenido del directorio y no el directorio en sí:fuente
shopt -s dotglob
esto funcione si hay algún archivo de puntos/home/username/A/
.