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,则
代表操作成功,则输出转换成功提示
 

相关内容

    暂无相关文章