在Linux中合​​并2个目录树而不复制?

前端之家收集整理的这篇文章主要介绍了在Linux中合​​并2个目录树而不复制?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个布局相似的目录树,即
.
 |-- dir1
 |   |-- a
 |   |   |-- file1.txt
 |   |   `-- file2.txt
 |   |-- b
 |   |   `-- file3.txt
 |   `-- c
 |       `-- file4.txt
 `-- dir2
     |-- a
     |   |-- file5.txt
     |   `-- file6.txt
     |-- b
     |   |-- file7.txt
     |   `-- file8.txt
     `-- c
         |-- file10.txt
         `-- file9.txt

我想合并dir1和dir2目录树来创建:

merged/
 |-- a
 |   |-- file1.txt
 |   |-- file2.txt
 |   |-- file5.txt
 |   `-- file6.txt
 |-- b
 |   |-- file3.txt
 |   |-- file7.txt
 |   `-- file8.txt
 `-- c
     |-- file10.txt
     |-- file4.txt
     `-- file9.txt

我知道我可以使用“cp”命令执行此操作,但我想移动文件而不是复制,因为我想要合并的实际目录非常大并且包含大量文件(数百万).如果我使用“mv”,由于目录名冲突,我会收到“文件存在”错误.

更新:您可以假设两个目录树之间没有重复的文件.

解决方法

rsync -ax --link-dest=dir1/ dir1/ merged/
rsync -ax --link-dest=dir2/ dir2/ merged/

这将创建硬链接而不是移动它们,您可以验证它们是否被正确移动,然后删除dir1 /和dir2 /.

原文链接:https://www.f2er.com/linux/402548.html

猜你在找的Linux相关文章