是否有一种方法可以检查cp -r
是否覆盖任何内容,而无需实际复制任何内容?
-n
似乎复制了不会冲突的文件,这不是我想要的。
答案 0 :(得分:2)
最简单的方法是使用rsync
命令,那里有很多参数可以覆盖目标或根据需要删除目标上的文件。
https://linux.die.net/man/1/rsync
或如注释中所述,您可以将cp -n
用于--no-clobber
。但总的来说,我建议您使用rsync进行操作。
答案 1 :(得分:0)
cp具有-i --interactive选项和-n,-no-clobber选项。 参见“ man 1 cp”。
答案 2 :(得分:0)
要仅检查文件是否存在于目标位置,而实际上不执行任何复制,则可以将diff
命令与-r
选项一起使用。
来自man diff
:
-r,--recursive
递归比较找到的所有子目录
diff -r --brief --report-identical-files /source-folder/ /target-folder/ | grep -v '^Only in'
--brief
列出了不同的文件(与-q
相同)--report-identical-files
对于没有区别的文件(与-s
相同)相同grep -v '^Only in'
删除仅位于一个目录树中的文件,因为这些文件不会被覆盖。输出将如下所示:
Files /source-folder/file1.txt and /target-folder/file1.txt are identical
Files /source-folder/file2.jpg and /target-folder/file2.jpg differ