在 Linux 中怎样使用cp命令合并目录树
2014-07-30 15:11
741 查看
怎样将两个布局相似的目录树合并成一个新的目录树?为理解该问题让我们思考下面的例子。
假设 dir1 和 dir2 目录中分别有3个子目录a,b和c.目录布局如下所示:
输入目录布局
在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:
文件布局
递归复制完成新的合并
现在让我们回到刚那问题上,且尝试使用mv命令而不是cp命令。
企图使用mv命令进行合并操作
这些目录不能被合并.因此我们不能像这样使用mv命令去合并目录. 现在你该怎样将原文件保存到"merged"目录中?
在我们尝试cp命令的硬链接选项前,让我们查看一下原文件的inode号码. 可通过tree命令--inodes选项来查看inodes:
原文件的inodes
现在我们有了inodes的列表,对于cp命令可通过--link选项创建硬链接:
使用硬链接合并的目录
Verify Inodes
移除原始目录
via: http://linoxide.com/linux-command/merge-directory-trees-linux/
原文作者:Raghu
本文由 LCTT 原创翻译,Linux中国 荣誉推出
假设 dir1 和 dir2 目录中分别有3个子目录a,b和c.目录布局如下所示:
输入目录布局
在目录a,b和c中有一些文件,tree命令的输出将能更好的说明:
文件布局
1. 使用cp命令创建合并:
现在我们将这两个目录合并成一个名为"merged"新的目录中.完成上述操作最简单的方式就是递归复制目录,如下图所示:递归复制完成新的合并
1.1 cp命令和替换带来的问题:
这种方式所带来的问题是该合并目录中所创建的文件为原文件的副本,并非原文件本身.别急, (你可能正在问自己) 如果不是原文件又有什么问题? 要回答你的问题,考虑下你有很多大文件的情况.那种情形下,复制所有的文件可能花费数小时。现在让我们回到刚那问题上,且尝试使用mv命令而不是cp命令。
企图使用mv命令进行合并操作
这些目录不能被合并.因此我们不能像这样使用mv命令去合并目录. 现在你该怎样将原文件保存到"merged"目录中?
2. 解决方法:
cp命令有一个非常有用的选项来帮助我们摆脱这种状况. cp命令的-l 或 --link选项能够创建硬链接而非原文件副本.让我们尝试一下。在我们尝试cp命令的硬链接选项前,让我们查看一下原文件的inode号码. 可通过tree命令--inodes选项来查看inodes:
原文件的inodes
现在我们有了inodes的列表,对于cp命令可通过--link选项创建硬链接:
使用硬链接合并的目录
2.1 验证文件:
现在文件已经被复制,让我们验证一下inodes是否和原文件匹配:Verify Inodes
2.2 清除:
正如你所看到的,这些文件的inodes和原文件的一样。现在问题已经解决,且原文件已被复制到合并目录中.现在我们能够移除dir1和dir2目录。移除原始目录
via: http://linoxide.com/linux-command/merge-directory-trees-linux/
原文作者:Raghu
本文由 LCTT 原创翻译,Linux中国 荣誉推出
相关文章推荐
- [转] 在 Linux 中怎样使用cp命令合并目录树
- linux中cp 命令使用介绍(复制文件或者目录)
- Linux下如何使用cp命令复制文件及复制目录
- linux下ln命令使用详解---linux连接文件或目录命令
- LINUX中CP命令使用
- 我使用过的Linux命令之dirname - 截取给定路径的目录部分
- 高效率使用linux命令:目录以及文件命令
- 在linux中怎样用命令完全拷贝一个目录下的所有文件(包括隐藏文件以及文件夹)到另外一个目录下
- 我使用过的Linux命令之basename - 去掉文件名的目录和后缀
- 我使用过的Linux命令之basename - 去掉文件名的目录和后缀
- linux下使用cp拷贝指定文件或目录
- Linux中cp和scp命令的使用方法
- Linux 指令篇:档案目录管理-----chmod----- 命令的使用方法
- linux下cp命令的使用
- 在linux下,如何使用find命令查看一个目录下包含多少文件
- Linux命令:cp (copy)复制文件或目录
- Linux下CP命令的使用!
- linux文件与目录的基本操作、linux命令(cp、tar、归档、ls、cd、tr、su、more、less、vi、cat等)
- 我使用过的Linux命令之mv - 文件或目录改名、移动位置
- Linux中cp和scp命令的使用方法