线上图片批量更换脚本记录
需求说明: 线上之前使用的图片没有经过处理,比较大。应产品同事要求,将图片拿出来处理后再替换之前的图片,图片名不变。
/tmp/image目录下存放的修改后的图片 [root@fangfull_web1 ~]# ls -l /tmp/image|head -10
total 66376
-rw-r--r-- 1 root root 114118 Jan 18 17:26 201407281934401406547280.jpg
-rw-r--r-- 1 root root 110450 Jan 18 17:26 201407281934511406547291.jpg
-rw-r--r-- 1 root root 156443 Jan 18 17:26 201407281937341406547454.jpg
-rw-r--r-- 1 root root 89006 Jan 18 17:26 201407281938241406547504.jpg
-rw-r--r-- 1 root root 136594 Jan 18 17:26 201407281938341406547514.jpg
-rw-r--r-- 1 root root 74327 Jan 18 17:26 201407281938551406547535.jpg
-rw-r--r-- 1 root root 114118 Jan 18 17:26 201407281940071406547607.jpg
-rw-r--r-- 1 root root 110450 Jan 18 17:26 201407281940161406547616.jpg
-rw-r--r-- 1 root root 105628 Jan 18 17:26 201407281940241406547624.jpg
线上图片存放的路径是/var/www/vhosts/www.fangfull.com/main/upload/,修改后的图片都有存放到这里 比如:注意find命令中的目标目录后面一定要加上/(比如下面的.../upload/,不能写成.../upload,否则查找不到)
[root@fangfull_web1 ~]# find /var/www/vhosts/www.fangfull.com/main/upload/ -name 201407281934401406547280.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281934401406547280.jpg
[root@fangfull_web1 ~]# find /var/www/vhosts/www.fangfull.com/main/upload -name 201407281934401406547280.jpg
[root@fangfull_web1 ~]#
那么修改后的图片批量替换之前的图片的脚本如下:
#!/bin/bash
for m in `ls -l /tmp/image|awk -F" " '{print $9}'`
do
for i in `cat /tmp/b.txt`
do
for n in `ls "$i"|awk -F"/" '{print $9}'`
do
if [ $m == $n ];then
cp -f /tmp/image/$m `cat /tmp/b.txt|grep "$m"`
else
echo "123" > /dev/null 2>&1
fi
done
done
done
脚本解刨如下:
[root@fangfull_web1 ~]# ls -l /tmp/image|awk -F" " '{print $9}'|head -10
201407281934401406547280.jpg
201407281934511406547291.jpg
201407281937341406547454.jpg
201407281938241406547504.jpg
201407281938341406547514.jpg
201407281938551406547535.jpg
201407281940071406547607.jpg
201407281940161406547616.jpg
201407281940241406547624.jpg
[root@fangfull_web1 ~]# for i in $(ls -l /tmp/image|awk -F" " '{print $9}');do echo `find /var/www/vhosts/www.fangfull.com/main/upload/ -name "$i"` >> /tmp/b.txt;done [root@fangfull_web1 ~]# cat /tmp/b.txt |head -10
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281934401406547280.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281934511406547291.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281937341406547454.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281938241406547504.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281938341406547514.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281938551406547535.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281940071406547607.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281940161406547616.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281940241406547624.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140813/201408131047131407898033.jpg
[root@fangfull_web1 ~]# ls /var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281934401406547280.jpg |awk -F"/" '{print $9}'
201407281934401406547280.jpg
[root@fangfull_web1 ~]# cat /tmp/b.txt |grep 201407281934401406547280.jpg
/var/www/vhosts/www.fangfull.com/main/upload/20140728/201407281934401406547280.jpg
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 技术分享 | 一文了解高并发限流算法
- prometheus-operator 监控 k8s 外部集群
- Kubernetes 通过statefulset部署redis cluster集群
- 猿实战13——实现你没听说过的前台类目
- 猿实战14——前台类目之广告牌设置
- 猿实战15——关联你所不明白的前后台类目
- 完美解决方案-雪花算法ID到前端之后精度丢失问题
- 猿实战16——承运商之搭建你的运费基石
- List对象去重及按属性去重的8种方法-java基础总结第六篇
- 总结java创建文件夹的4种方法及其优缺点-JAVA IO基础总结第三篇
- 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇
- 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇
- 总结java中删除文件或文件夹的7种方法-JAVA IO基础总结第四篇
- 总结java中创建并写文件的五种方式-JAVA IO基础总结第一篇
- 8成以上的java线程状态图都画错了,看看这个-图解java并发第二篇