我正在尝试从中复制文件和子文件夹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/