Chinaunix

标题: 请教一个文件夹复制脚本! [打印本页]

作者: shivchen    时间: 2008-05-30 09:12
标题: 请教一个文件夹复制脚本!
请教一下,我需要把
/aaa/jhfsdjf/bbb
/aaa/dfsfgr/bbb
/aaa/sfgdg/bbb
/aaa/7fhdd/bbb   
这样中间不规则文件夹下的bbb目录复制到另外的比如/ccc的目录,脚本该怎么写
可能说得不太清楚,复制后应该变成
/ccc/jhfsdjf/bbb
/ccc/dfsfgr/bbb
/ccc/sfgdg/bbb
/ccc/7fhdd/bbb  
主要目的是为了只拷贝不规则目录下的bbb目录,但目录顺序都能保持不变的情况
请各位高手支招
作者: juise    时间: 2008-05-30 09:36
不明白,难道是目录重命名?
cp -r /aaa/    /ccc/
?
作者: gucuiwen    时间: 2008-05-30 09:49
cd /aaa
find . -type d -a -regex ".*bbb$" -print0|xargs -0 -i cp -a `dirname {}` /ccc  

差不多就是这个意思吧?
作者: shivchen    时间: 2008-05-30 09:52
因为在中间不规则文件夹下还有其他的文件目录不能复制过去覆盖
作者: shivchen    时间: 2008-05-30 10:00
原帖由 gucuiwen 于 2008-5-30 09:49 发表
cd /aaa
find . -type d -a -regex ".*bbb$" -print0|xargs -0 -i cp -a `dirname {}` /ccc  

差不多就是这个意思吧?


谢谢,虽然不是很明白,我试试
作者: shivchen    时间: 2008-05-30 10:30
还是把中间不规则文件夹下的其他文件和目录复制到/ccc下面去了
作者: arron.chang    时间: 2008-05-30 11:27
标题: 回复 #1 shivchen 的帖子
笨一点的方法吧:

cd /aaa
find . -name bbb -print | xargs tar -cvf ../ccc/bbb.tar
cd ../ccc
tar -cvf bbb.tar
作者: shivchen    时间: 2008-06-02 14:31
用的其他方法了把不规则目录下不要CP的文件都用
find <yourdir> -type f -name "name" -exec rm -f {} /tmp/ \;
删除了再复制
作者: r2007    时间: 2008-06-02 20:15
  1. cd /aaa;find . -type d -name bbb|cp -pd /ccc
复制代码

改正一下:
  1. cd /aaa;find . -type d -name bbb|cpio -pd /ccc
复制代码

[ 本帖最后由 r2007 于 2008-7-16 20:07 编辑 ]
作者: host-sandylau    时间: 2008-07-16 19:46
原帖由 r2007 于 2008-6-2 20:15 发表
cd /aaa;find . -type d -name bbb|cp -pd /ccc



0> cd /aaa;find . -type d -name bbb|cp -pd /ccc
cp: 缺少了目的地文件
请尝试执行‘cp --help’来获取更多信息。

好像不行吧
作者: r2007    时间: 2008-07-16 20:06
原帖由 host-sandylau 于 2008-7-16 19:46 发表



0> cd /aaa;find . -type d -name bbb|cp -pd /ccc
cp: 缺少了目的地文件
请尝试执行‘cp --help’来获取更多信息。

好像不行吧

写错了,将cp改成cpio即可。
作者: walkerxk    时间: 2008-07-16 20:59
如果是我的话,我会把目录列表列出到a.lst,然后用sed把aaa改成ccc保存到b.lst,然后paste a.lst b.lst|sed 's/^/cp -r /',然后执行这个脚本。
作者: eeeef    时间: 2008-07-16 22:13
看的挺乱,还是没明白LZ的意思。
作者: blackold    时间: 2008-07-17 11:30
标题: 回复 #9 r2007 的帖子
添加-maxdepth -mindepth 后更符合LZ的意思。

这种问题还是用rsync好。
作者: blackold    时间: 2008-07-17 11:50
这个好像还简单些:
  1. cd aaa; cp -R --parents */bbb/ ../ccc/
复制代码


更正:
  这个方法行不通,因为也复制了regular file。

[ 本帖最后由 blackold 于 2008-7-17 17:09 编辑 ]
作者: 可可熊    时间: 2008-07-17 12:00
我怎么觉得
cp -r aaa ccc
就行了
作者: blackold    时间: 2008-07-17 12:06
原帖由 可可熊 于 2008-7-17 12:00 发表
我怎么觉得
cp -r aaa ccc
就行了






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2