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

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

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

#!/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之类的命令也行。

你可能感兴趣的:(使用shell脚本批量修改文件后缀名)