在 Linux 中将所有文件从一个位置复制到另一个位置,而不复制目录本身

在 Linux 中将所有文件从一个位置复制到另一个位置,而不复制目录本身

我想将部分或全部文件从目录复制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 不存在,则创建它

相关内容