shell 文件名分割,重命名移动批量文件

本文介绍了如何使用Shell脚本进行文件名分割,分别展示如何获取文件的基本名称和扩展名。接着,文章提供了一个示例脚本,演示如何批量重命名和移动jpg及png文件,使其具有统一的格式,例如'image-x.jpg'。脚本中通过for循环处理文件,并利用mv命令进行重命名,同时检查操作是否成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.文件名分割
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,则
代表操作成功,则输出转换成功提示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值