如何从文件夹中复制文件而无需文件夹本身

如何从文件夹中复制文件而无需文件夹本身

我正在尝试从中复制文件和子文件夹A文件夹没有A本身。例如,A文件夹包含下一个:

| file1.txt   
| file2.txt    
| subfolder1   

执行下一个命令给我错误的结果:

sudo cp -r /home/username/A/ /usr/lib/B/

结果是

/usr/lib/B/A/...copied files...

代替..

/usr/lib/B/...copied files...

我怎样才能达到预期的目标而不原始文件夹

答案1

高级cp

cp -r /home/username/A/. /usr/lib/B/

这是特别好的,因为无论目标目录是否已经存在它都可以工作。

shell 通配符

如果目录中没有太多对象,则可以使用 shell 通配:

mkdir -p /usr/lib/B/
shopt -s dotglob
cp -r /home/username/A/* /usr/lib/B/

同步

rsync -a /home/username/A/ /usr/lib/B/

/源路径末尾的 很重要;无论目标目录是否已存在都有效。

寻找

mkdir -p /usr/lib/B/
find /home/username/A/ -mindepth 1 -maxdepth 1 -exec cp -r -t /usr/lib/B/ {} +

或者如果您不需要空子目录:

find /home/username/A/ -mindepth 1 -type f -exec cp --parents -t /usr/lib/B/ {} +

(没有mkdir

答案2

如果在 GNU 系统上,来自man cp

   -T, --no-target-directory
          treat DEST as a normal file

这使您可以编写cp -rT /home/username/A/ /usr/lib/B/正确的事情。

答案3

告诉cp复制目录的内容而不是目录本身:

sudo cp -r /home/username/A/* /usr/lib/B/

相关内容