背景:
之前运行的系统涉及图片上传,其中图片会被处理,包含一张缩略图。与原图的区别是 small_图片名.扩展名【jpg,jpeg,png......】
问题:
由于程序后台原因,生成缩略图是名称不小心写错了。把 small 写成了 samll 。后期已改正过来。但是Linux 图片服务器缩略图部分名称还是 samll 开头。总计2101 张
-sh-4.1$find /mnt/wit/pic_service/images/goods_pic_dir -name 'samll*' -type f | xargs-I{} ls {} | wc -l
2101
造成结果就是有部分图片不能访问。
处理:
对Linux 图片服务器的缩略图图片进行重命名或者重新复制一张正确命名的图片。
过程:
由于实际环境已经处理成功,所以自己模拟了一个环境。过程都是一样的。
1、数据模拟
[oldboy@mode-6work]$ pwd
/home/oldboy/work
[oldboy@mode-6work]$ ll
total12
-rwxrw-r--1 oldboy oldboy 171 Dec 2 15:32 file-rename.sh
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:14 pic
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:13 pic2
[oldboy@mode-6work]$ ll pic
total0
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:411441078562454.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:411441078562455.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:411441078562456.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:37 samll_1441078562455.png#需要修改
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:37 samll_1441078562456.png#需要修改
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:37 small_1441078562454.png#正常数据
[oldboy@mode-6work]$ ll pic2
total0
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:131441078562450.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:131441078562451.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:131441078562452.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13 samll_1441078562450.png#需要修改
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13 samll_1441078562451.png#需要修改
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13 samll_1441078562452.png#需要修改
2、查找需要修改的数据
注意查找的目录路径非常重要,做到:1、尽量不查找多余的目录;2、所有要查找的目录必须查完。
这样才能做到数据精准
[oldboy@mode-6work]$ ll
total 12
-rwxrw-r--1 oldboy oldboy 171 Dec 2 15:32 file-rename.sh
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:14 pic
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:13 pic2
[oldboy@mode-6work]$ find ./-name 'samll*' -type f
#其中./ 等价于 /home/oldboy/work/
./pic/samll_1441078562455.png
./pic/samll_1441078562456.png
./pic2/samll_1441078562450.png
./pic2/samll_1441078562452.png
./pic2/samll_1441078562451.png
3、shell 脚本
[oldboy@mode-6work]$ vim file-rename.sh
#!/bin/sh
for file in `find /home/oldboy/work/ -name 'samll*' -type f | xargs -I{} ls {}`
do
# 特别注意查找的路径,请根据实际情况进行修改
# echo $file # 注释 用于查看 查找数据是否正确
/bin/cp -a $file `echo $file | sed 's#samll#small#g'` # 也可使用 /bin/mv
done
修改文件权限,这样才能执行shell脚本
[oldboy@mode-6work]$ ll
total12
-rw-rw-r-- 1 oldboyoldboy 168 Dec 2 16:26 file-rename.sh
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:14 pic
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:13 pic2
[oldboy@mode-6work]$ chmod 764 file-rename.sh
[oldboy@mode-6work]$ ll
total12
-rwxrw-r-- 1 oldboy oldboy 168 Dec 2 16:26 file-rename.sh
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:14 pic
drwxrwxr-x2 oldboy oldboy 4096 Dec 2 16:13 pic2
4、结果
[oldboy@mode-6work]$ ./file-rename.sh #脚本执行
[oldboy@mode-6work]$ ll pic
total0
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:411441078562454.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:411441078562455.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:411441078562456.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:37samll_1441078562455.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:37samll_1441078562456.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 14:37small_1441078562454.png#之前就正确的
-rw-rw-r-- 1 oldboy oldboy 0 Dec 2 14:37 small_1441078562455.png
-rw-rw-r-- 1 oldboy oldboy 0 Dec 2 14:37 small_1441078562456.png
[oldboy@mode-6work]$ ll pic2
total0
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:131441078562450.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:131441078562451.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13 1441078562452.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13samll_1441078562450.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13samll_1441078562451.png
-rw-rw-r--1 oldboy oldboy 0 Dec 2 16:13samll_1441078562452.png
-rw-rw-r-- 1 oldboy oldboy 0 Dec 2 16:13 small_1441078562450.png
-rw-rw-r-- 1 oldboy oldboy 0 Dec 2 16:13 small_1441078562451.png
-rw-rw-r-- 1 oldboy oldboy 0 Dec 2 16:13 small_1441078562452.png
结果就是这样。
Linux 对文件名进行批量修改成功。
ubuntu下如何批量修改文件后缀名:http://www.linuxdiyf.com/linux/17137.html
Linux批量重命名文件后缀名:http://www.linuxdiyf.com/linux/15621.html
在Linux下批量修改文件后缀名最简单的方法:http://www.linuxdiyf.com/linux/9910.html
Linux批量更改文件后缀名:http://www.linuxdiyf.com/linux/6294.html