我想将部分或全部文件从目录复制test/A/
到目录test/B/
,但不复制目录 A 本身。
我尝试了该命令cp -R test/A/ test/B
,但它也会复制目录和文件,并且变成test/B/A/
……
答案1
当您指定时test/A/
,您告诉 Bash 复制目录本身。
要仅复制目录的内容,请使用全球*
:
cp -R test/A/* test/B
这里,*
将匹配 A 中的所有文件,除了以点为前缀的隐藏文件,例如.htaccess
。要包括这些文件*
,请shopt -s dotglob
在之前使用 , 调用。
答案2
要在本地或远程获取相同的副本,我更喜欢rsync
使用cp
。这样您可以更好地控制应在源或目标上复制或删除的内容(如果需要)。顺便说一下,它修复了隐藏文件(又名.*
)的问题。基本用法与使用一样简单cp
。
复制目录A
及其内容以供B
使用:
rsync -va test/A test/B
复制目录的内容A
(包括隐藏文件)以供B
使用:
rsync -va test/A/ test/B
如果 B 不存在,则创建它