Chinaunix
标题:
find内容 并建立对应的目录
[打印本页]
作者:
kakaliu
时间:
2014-12-02 21:09
标题:
find内容 并建立对应的目录
本帖最后由 kakaliu 于 2014-12-02 21:18 编辑
QQ图片20141202210827.png
(23.71 KB, 下载次数: 58)
下载附件
2014-12-02 21:09 上传
gold/guandian/2010-12/2110274.htm
gold/guandian/2010-12/2113423.htm
html/2014/c203_0217/W020140217370194853792.png
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:
#!/bin/bash
findpath="/hxw/shell/backup"
html="/var/www/html"
findname="
2110274.htm
2113423.htm
abdc
W020140323327068017183.jpg
W020140217370194853792.png
"
for i in $findname;do
tmp=`find $findpath -type f -a -name "$i"`
if [ ! -z $tmp ];then
t=${tmp%/*}
ok=`echo $t |sed 's/.*backup\///'`
mkdir -p $ok
cp -p $tmp $html"/"$ok"/"
fi
done
复制代码
作者:
zerostudy
时间:
2014-12-03 10:49
mkdir -p $ok
改成
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:
假定目录存在
#!/bin/sh
htmlpre=/var/www/html
bakpre=/backup
cd $bakpre
for i in $(<urfile)
do
i=${i#http://*/}
if [ -e $i ];then
cp -Ri --parents $i $htmlpre
fi
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