这是描述此情况的最佳方式:
dirA
dir1
file1.txt
file3.txt
dirB
dir1
file1.txt
file2.txt
我想将 dirB 的内容复制到 dirA 中。 cp -R dirB/* dirA
将删除dir1
并复制文件,导致:
dirA
dir1
file1.txt
file2.txt
但我想合并它们(就像在 Windows 上一样)并最终得到:
dirA
dir1
file1.txt
file2.txt
file3.txt
有什么建议吗?我试过了ditto
,但似乎忽略了递归部分,只是转储了顶层文件夹中的所有文件。
答案1
不要使用 cp。使用同步。
答案2
cp做不是删除文件。
答案3
使用-i
cp 选项
-i Cause cp to write a prompt to the standard error output before
copying a file that would overwrite an existing file. If the
response from the standard input begins with the character `y'
or `Y', the file copy is attempted. (The -i option overrides
any previous -n option.)
答案4
dirA dir1 文件1.txt 文件3.txt dirB dir1 文件1.txt 文件2.txt
我会这样做:
$ cd dirA
$ tar cf - | (cd .../dirB ; tar xf -)
文件会被覆盖,目录不会被覆盖。