码迷,mamicode.com
首页 > 其他好文 > 详细

导出七牛图片

时间:2016-01-30 18:21:40      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

原来图片都是在本地,往外导图片特别简单,只要执行一下cp的脚本就好了,但是现在图片都迁移到了七牛上,再往外导出图片就麻烦了
在七牛有一个qshell工具
里边有一个qdownload 
qdownload 从七牛空间同步数据到本地,支持只同步某些前缀的文件,支持增量同步
 
用的话呢qshell qdownload qdownload.conf  是这么用qdownload.conf 为配置文件
里边有这样一个配置 ,其他配置没有给出。
"prefix"    :   "",  填写图片的前缀
给我的文件时都是这样的,
cp /root/export_files/1025168/dfeafa0a-6f96-4b32-88c1-dde103b3655a/1453366970085.jpg /root/export_files/8155-003f-3115.jpg
一共2000多张......
我先把文件用一下命令截取  
cat cp导出路径.txt | awk -F / ‘{print $4"/“$5}‘ > new_image.txt
得到这个格式
1025168/dfeafa0a-6f96-4b32-88c1-dde103b3655a,
那么配置文件的那行应该写成这样
"prefix"    :   "1025168/dfeafa0a-6f96-4b32-88c1-dde103b3655a",
然后我想每次执行完qshell qdownload qdownload.conf 然后自动修改prefix的路径,然后把路径改成下一个需要执行的路径,继续执行。
 
开始由于没有找到用”为分隔符进行分割的方法,所以就把配置文件写成了
"prefix"    :   “/1025168/dfeafa0a-6f96-4b32-88c1-dde103b3655a/",
以/为分隔符进行分割
cat qdownload.conf | grep prefix | awk -F ‘/‘ ‘{print "/"$2"/"$3"/"}‘
得到 /1025168/dfeafa0a-6f96-4b32-88c1-dde103b3655a/
测试命令:
path=/1051742/0f6faaa4-808c-4320-87a3-c95f0bdc20b5/
path1=`cat qdownload.conf | grep prefix | awk -F ‘/‘ ‘{print "/"$2"/"$3"/"}‘`
sed -i "s/$path1/$path/g" `grep prefix -rl qdownload.conf`
./qshell qdownload qdownload.conf
 
但是经过测试,  /1051742/0f6faaa4-808c-4320-87a3-c95f0bdc20b5/ 这个格式不能再七牛上进行下载 
1051742/0f6faaa4-808c-4320-87a3-c95f0bdc20b5才可以
然后又找到了以”为分割符进行分割的方法
修改后的测试命令:
path=1051742/0f6faaa4-808c-4320-87a3-c95f0bdc20b5
path1=`cat qdownload.conf | grep prefix | awk -F ‘"‘ ‘{print $4}‘`
sed -i "s/$path1/$path/g" `grep prefix -rl qdownload.conf`
./qshell qdownload qdownload.conf
 
测试后,第三句没有成功
想了想才发现sed -i "s/$path1/$path/g" `grep prefix -rl qdownload.conf`
这句中的‘/‘可能和变量中‘/‘有冲突,所以导致失败
又把这句修改为
sed -i “s@$path1@$path@" `grep prefix -rl qdownload.conf才可以
最终脚本
#!/bin/bash
while read path
do
path1=`cat qdownload.conf | grep prefix | awk -F ‘"‘ ‘{print $4}‘`
sed -i "s@$path1@$path@" `grep prefix -rl qdownload.conf`
./qshell/qshell qdownload download.conf
done<image.txt
 
脚本完成了,就这么两句,
可是在这个过程中走了很多弯路,想过另一种循环,但是(思路太傻)排除了。顺便也学习和复习了一些vi处理文本命令和sed命令
我觉得如果使用vi命令熟练的话,用vi处理文本,比用编辑软件,更方便。
总结的命令:
1、用newstring替换文件file.txt的oldstring
sed -i "s/oldstring/newstring/g" `grep oldstring -rl file.txt`
2、以"为分割符,截取每行的第四部分
cat file.txt |  awk -F ‘"‘ ‘{print $4}‘ 
3、vi 处理文本
:%s/^/\//   行首加 /
:%s/$/\//    行尾加/
:%s/^\///g   行首减/
:%s/\/$//g   行尾减/
:%s/^\s*//g  行首减 空格
:g/^$/d     删除空行
:%s/oldstring/newstring/g  全部替换
:%s/oldstring/newstring/  替换每行的第一个字符串
 

导出七牛图片

标签:

原文地址:http://www.cnblogs.com/cuizhipeng/p/5171337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!