使用shell脚本批量修改文件后缀名

最近一直在做一些集群环境的搭建的尝试,经常需要在多个设备上做着相同的事情,如果写成脚本,就只用分发脚本就可以了,所以要加强这方面的学习。

美工给了一批图片,是@2x的,命名是xx.png而不是xx@2x.png,一个个的改肯定不行,网上搜一下还是很多这样的脚本的。

#!/bin/bash

old='.png'
new='@2x.png'
dir=$(eval pwd)
for file in $(ls $dir | grep .$old)
    do
    name=$(ls $file | cut -d. -f1)
    mv $file ${name}$new
    done
echo "change done!"

ls、grep、mv、echo、pwd算是比较常用的命令,eval 、cut用的少一点。

eval

pwd将路径输出到控制台,eval将pwd的输入结果取了出来,可以搭配带有输出的命令一起使用,如eval echo $JAVA_HOME。

cut

cut -d. #使用点进行分割字符串,
cut -d.  -f1 #使用点进行分割字符串,返回第一部分,计数从1开始,没有-f0

cut貌似只能将控制台输出做了输入,

$ echo www.ffff | cut -d. -f1

www

替换

有时候名称中含有中文,需要替换

name='加载中-01'
echo ${name/'加载中'/'loading'}

loading-01

直接使用shell内置的方法就可以,使用sed之类的命令也行。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容