> Linux教程 > linux基础 >

Linux下如何合并目录

今天晚上给本博客升级WordPress到3.0,为了方便就直接将tar包放到服务器上去了。然后习惯的用tar指令解压后,生成了一个wordpress目录,将配置文件重新配置好,然后就打算将这个目录与原来的目录合并。习惯性的输入了下面这条指令:

#cp -Rf wordpress my_blog

指令成功执行了,然后赶紧去看my_blog目录下的文件,发现没有更新,而是多了个my_blog子目录!晕,cp直接将源目录拷贝到目标目录下当子目录了!看来得赶紧想个办法解决掉这个问题,否则就得手动一个一个传文件上去覆盖老目录了,多慢啊!

赶紧上网找解决办法,很快就被我命中了方法。使用下面的指令来将/aaa/bbb目录复制到当前目录的bbb目录下合并。-u参数表示只更新较新的文件和不存在的文件。

#cp -R -u /aaa/bbb .

不过要实现这点,必须将原来的目录改名成要合并的目录,然后放到另外一个目录下做“跳板”才行。简单的说,如果想要更新当前目录下的my_blog目录,我得放到如./tmp/my_blog目录下,然后再使用指令“cp -R -u ./tmp/my_blog .”的方式来更新。虽然麻烦点,但是暂时只找到这个方法了,说干就干。依次使用下面的指令操作(中文为命令注释,实际操作的时候不需要输入)

#mkdir tmp  在当前目录下创建tmp目录
#cp -Rf wordpress tmp/将当前目录下的wordpress目录移动到tmp目录下
#cd tmp/ 进入tmp目录
#mv wordpress my_blog 将tmp目录下的wordpress目录重命名位my_blog
#cd .. 返回到上级目录
#\cp -Rf tmp/my_blog . 将tmp目录下的my_blog与当前目录下的同名目录合并

大家可能会发现,最后一个命令没有使用cp -R -u,为什么呢?舍弃掉-u是为了确保所有文件都被覆盖掉。加上f参数是为了避免提示是否要覆盖文件,文件少还可以手动敲y后回车,文件多了要命啊!但是为什么cp之前还有一个“\”符号呢?很简单,cp命令使用-f参数后,还是会提示是否要覆盖文件,因为cp命令的alias是cp -i,而恰恰-i参数是表明有交互提示,于是直接输入cp -Rf是不能消除提示的。在cp命令前加上“\”,或者使用cp命令的绝对地址就可以保证不出现提示了。

最后,我们需要将原来的目录删除掉,由于新建的tmp里只有原来的目录,所以我们把整个tmp目录删除即可:

#rm -rf tmp

这样就大功告成了!

(责任编辑:IT)