shell文件名分割,重命名移动批量文件
shell文件名分割,重命名移动批量文件
shell文件名分割,重命名移动批量文件
1.分割出文件名和扩展名
file="sample.jpg"
name=${file%.*}
echo "File name is: $name"
输出:
File name is: sample
这里的${file%.*}的意思是:
用file的内容,从右边匹配字符串,这里是.*,说明
遇见'.'号结束,然后取出剩余的左边的部分作为结果
返回
extension=${file#*.}
echo "File extension is: $extension"
输出:
File extension is: jpg
这里的${file#*.}的意思是:
这和前面的那个相反,他是从左边开始匹配字符串,遇见'.'
后,把剩余的部分给截取下来作为结果返回
扩展:
这里一个%号和#号是短匹配,即第一次遇见时就截止
而可以使用%%和##做为长匹配
3.重命名和移动批量文件
1.当从相机中导出的文件名字不统一时,可以施行统一的更改
名字,如指定在某一天等
#! /bin/bash
# Filename:renameJpgAndPng.sh
# Description: Rename jpg and png files
count=1
for img in *.png *.jpg
do
new="image-$count.${img##*.}" # to be like 'image-x.jpg'
mv "$img" "$new" 2> /dev/null
if [ $? -eq 0 ];
then
echo "Renaming $img to $new."
let count++
fi
done
解释:定义一个数字变量,并读取当前文件夹下的所有以png和jpg
结尾的文件,变量new是新文件的格式,先是加image-前缀,
和$count,并进行长匹配,获取文件后缀名。然后通过mv命令来
移动重命名,若产生错误2(stderr),则重定向到/dev/null进
行回收垃圾。$? 的意思是上一次操作返回的结果,如果是0,则
代表操作成功,则输出转换成功提示
评论暂时关闭