Chinaunix

标题: find内容 并建立对应的目录 [打印本页]

作者: kakaliu    时间: 2014-12-02 21:09
标题: find内容 并建立对应的目录
本帖最后由 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/这个目录下
作者: Buring__    时间: 2014-12-02 21:26
kakaliu
/backup 下面的目录不是都是好好的, 直接copy过去么
作者: kakaliu    时间: 2014-12-02 21:40
回复 2# Buring__


    我只找我需要的文件,多余的文件不要,目录整个复制过去 会有很多多余的文件
作者: blackold    时间: 2014-12-03 09:30
搞个循环就行了。
对于文件
http://xxx/gold/guandian/2010-12/2110274.htm
是在查找
backup/gold/guandian/2010-12/2110274.htm
还是在 backup 目录及其子目录查找
2110274.htm
?
作者: kakaliu    时间: 2014-12-03 09:58
回复 4# blackold


    在backup及其子目录去查找
作者: blackold    时间: 2014-12-03 09:59
回复 5# kakaliu


    如果有多个同名文件呢?
作者: zerostudy    时间: 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
复制代码

作者: zerostudy    时间: 2014-12-03 10:49
  1. mkdir -p $ok
  2. 改成
  3. mkdir -p $html"/"$ok"/"
复制代码

作者: kakaliu    时间: 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/这个目录下
作者: blackold    时间: 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
复制代码

作者: jason680    时间: 2014-12-03 17:45
回复 9# kakaliu

$ find /backup | grep -E '(htm|g)$'
/backup/gold/guandian/2010-12/2113423.htm
/backup/gold/guandian/2010-12/2110274.htm
/backup/html/2014/c203_0217/W020140217370194853792.png
/backup/html/2014/c203_0323/W020140323327068017183.jpg

$ find /var/www/html/ | grep -E '(htm|g)$'

$ cat html.log
httpx://www.xxx.com.cn/gold/guandian/2010-12/2110274.htm
httpx://www.xxx.com.cn/gold/guandian/2010-12/2113423.htm
httpx://www.xxx.com.cn/html/2014/c203_0217/W020140217370194853792.png
httpx://www.xxx.com.cn/html/2014/c203_0323/W020140323327068017183.jpg

Note: the "httpx" is "http" in file

$ awk -vsrc="/backup" -vdes="/var/www/html" -F"/" '{p="";for(n=4;n<NF;n++){p=p$n"/"};cmd="mkdir -p "des"/"p";\n cp " src"/"p $NF" "des"/"p; print(cmd)}' html.log
mkdir -p /var/www/html/gold/guandian/2010-12/;
cp /backup/gold/guandian/2010-12/2110274.htm /var/www/html/gold/guandian/2010-12/
mkdir -p /var/www/html/gold/guandian/2010-12/;
cp /backup/gold/guandian/2010-12/2113423.htm /var/www/html/gold/guandian/2010-12/
mkdir -p /var/www/html/html/2014/c203_0217/;
cp /backup/html/2014/c203_0217/W020140217370194853792.png /var/www/html/html/2014/c203_0217/
mkdir -p /var/www/html/html/2014/c203_0323/;
cp /backup/html/2014/c203_0323/W020140323327068017183.jpg /var/www/html/html/2014/c203_0323/

# Note: check output information(shell command) without issue and change the "print" to "system" to run the command

$ awk -vsrc="/backup" -vdes="/var/www/html" -F"/" '{p="";for(n=4;n<NF;n++){p=p$n"/"};cmd="mkdir -p "des"/"p";\n cp " src"/"p $NF" "des"/"p; system(cmd)}' html.log

$ find /var/www/html/ | grep -E '(htm|g)$'
/var/www/html/gold/guandian/2010-12/2113423.htm
/var/www/html/gold/guandian/2010-12/2110274.htm
/var/www/html/html/2014/c203_0217/W020140217370194853792.png
/var/www/html/html/2014/c203_0323/W020140323327068017183.jpg






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