免费注册 查看新帖 |

Chinaunix

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

[文本处理] find内容 并建立对应的目录 [复制链接]

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-12-02 21:09 |只看该作者 |倒序浏览
本帖最后由 kakaliu 于 2014-12-02 21:18 编辑


  1. gold/guandian/2010-12/2110274.htm
  2. gold/guandian/2010-12/2113423.htm
  3. html/2014/c203_0217/W020140217370194853792.png
  4. html/2014/c203_0323/W020140323327068017183.jpg
复制代码
由于不能发url链接 文本只能截取一部分 少了域名


这些网站 都因为*.*的文件不存在,所以打开页面都变成了404

因为以前做过备份,在/backup/下 可能存在/gold/guandian/2010-12/2110274.htm 对应的目录或者文件

现在需求就是去/backup下 查找 是否有这些文件,如果有的话 就将这个文件 根据之前域名的地址 建立对应的目录并拷贝过去

如查找2110274.htm 找到了,就在/var/www/html/目录下建立相应子目录 gold/guandian/2010-12/
最后2110274.htm 就在/var/www/html/gold/guandian/2010-12/这个目录下

论坛徽章:
9
2015亚冠之大阪钢巴
日期:2015-06-04 11:47:30丑牛
日期:2015-01-22 15:49:26巳蛇
日期:2015-01-22 10:11:18巨蟹座
日期:2014-11-20 10:55:03天蝎座
日期:2014-11-16 22:10:26处女座
日期:2014-11-16 11:01:10申猴
日期:2014-09-19 11:12:37双鱼座
日期:2014-07-25 10:09:54程序设计版块每日发帖之星
日期:2015-08-24 06:20:00
2 [报告]
发表于 2014-12-02 21:26 |只看该作者
kakaliu
/backup 下面的目录不是都是好好的, 直接copy过去么

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
3 [报告]
发表于 2014-12-02 21:40 |只看该作者
回复 2# Buring__


    我只找我需要的文件,多余的文件不要,目录整个复制过去 会有很多多余的文件

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2014-12-03 09:30 |只看该作者
搞个循环就行了。
对于文件
http://xxx/gold/guandian/2010-12/2110274.htm
是在查找
backup/gold/guandian/2010-12/2110274.htm
还是在 backup 目录及其子目录查找
2110274.htm
?

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
5 [报告]
发表于 2014-12-03 09:58 |只看该作者
回复 4# blackold


    在backup及其子目录去查找

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2014-12-03 09:59 |只看该作者
回复 5# kakaliu


    如果有多个同名文件呢?

论坛徽章:
0
7 [报告]
发表于 2014-12-03 10:45 |只看该作者
try:
  1. #!/bin/bash

  2. findpath="/hxw/shell/backup"
  3. html="/var/www/html"

  4. findname="
  5. 2110274.htm
  6. 2113423.htm
  7. abdc
  8. W020140323327068017183.jpg
  9. W020140217370194853792.png
  10. "
  11. for i in $findname;do

  12.         tmp=`find $findpath -type f -a -name "$i"`
  13.         if [ ! -z $tmp ];then
  14.                 t=${tmp%/*}
  15.                 ok=`echo $t |sed 's/.*backup\///'`
  16.                 mkdir -p $ok
  17.                 cp -p $tmp $html"/"$ok"/"

  18.         fi

  19. done
复制代码

论坛徽章:
0
8 [报告]
发表于 2014-12-03 10:49 |只看该作者
  1. mkdir -p $ok
  2. 改成
  3. mkdir -p $html"/"$ok"/"
复制代码

论坛徽章:
2
射手座
日期:2013-10-29 16:22:32丑牛
日期:2013-11-25 16:29:17
9 [报告]
发表于 2014-12-03 10:52 |只看该作者
回复 6# blackold


    去根据域名之后的那一段去判断,比如查找2110274.htm
是拿 gold/guandian/2010-12/2110274.htm 去/backup下去查找 有的话 就将/bacup下的拷贝到我说的路径下去,就在/var/www/html/目录下建立相应子目录
最后2110274.htm 就在/var/www/html/gold/guandian/2010-12/这个目录下

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2014-12-03 16:10 |只看该作者
回复 9# kakaliu


    try:
假定目录存在
  1. #!/bin/sh

  2. htmlpre=/var/www/html
  3. bakpre=/backup

  4. cd $bakpre

  5. for i in $(<urfile)
  6. do
  7.     i=${i#http://*/}
  8.     if [ -e $i ];then
  9.         cp -Ri --parents $i $htmlpre
  10.     fi
  11. done
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP