免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5811 | 回复: 10
打印 上一主题 下一主题

递归目录cp内容, [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-21 10:48 |只看该作者 |倒序浏览
如何递归一个目录, 把倒数第二层目录中的所有内容cp到当前 ....
例如: 随机一个目录
1/2/3/4/5/6/7/*
把7/*的内容cp到当前目录中, 结果./7/*
多谢....

论坛徽章:
0
2 [报告]
发表于 2010-10-21 10:54 |只看该作者
cp -r 1/2/3/4/5/6/7 .

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2010-10-21 11:00 |只看该作者
这属于重复发贴吧

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-02-10 06:20:01IT运维版块每日发帖之星
日期:2016-02-11 06:20:00
4 [报告]
发表于 2010-10-21 11:13 |只看该作者
确实是重复发贴

你说的倒数第二层的内容没有具体指定是文件还是目录

目录树是:1/2/3/4/5/6/7/*

你要拷贝第7层下的内容

这样来,因为不确定7层下的内容,所以写2次find

find 1 -mindepth 7 -type d -exec cp -r {} ./ \;
find 1 -mindepth 7 -type f -exec cp {} ./ \;

论坛徽章:
0
5 [报告]
发表于 2010-10-21 11:38 |只看该作者
我只是说个例子: 目录的层数不固定, 有可能是10层, 也有可能是20层, 我只想要倒数第二层下的所有内容......

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2010-10-21 11:48 |只看该作者
ls -R |rev|cut -f 2- -d"/"|rev
剩下的就是循环

论坛徽章:
2
IT运维版块每日发帖之星
日期:2016-02-10 06:20:01IT运维版块每日发帖之星
日期:2016-02-11 06:20:00
7 [报告]
发表于 2010-10-21 11:57 |只看该作者
如果你确定你的目录形式类似1/2/3/4/5/6/7/8这样
#!/bin/bash
trees=`find 1 -type d|wc -l`
let trees--

find 1 -mindepth $trees -type d -exec cp -r {} ./ \;
find 1 -mindepth $trees -type f -exec cp {} ./ \;

论坛徽章:
0
8 [报告]
发表于 2010-10-21 11:59 |只看该作者
ls -R |rev|cut -f 2- -d"/"|rev
剩下的就是循环
昭襄王 发表于 2010-10-21 11:48



   能说个例子说明一下吗...
多谢.......

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
9 [报告]
发表于 2010-10-21 13:45 |只看该作者
回复 8# ruchong


    ls -R递归列出当前目录的子目录和文件
rev翻转行
cut -f 2- -d"/"以"/"为分隔符切出第二列和第二列之后的内容,此时非目录被过滤掉了
rev翻转回来,留下的是倒数第2个目录之上的目录
不知道你是不是这个意思
如果你是说最深层的倒数第二,这样是不行的

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2010-10-24 23:41 |只看该作者
几个问题需要澄清的,执行cp的目录是什么目录。
./7/*中的星号是否代表的是文件?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP