shell-批量修改文件名及扩展名多案例
1. 功能描述如下表:

批量文件改名案例实战:
问题1:
创建测试数据
[root@1-241 tmp]# for i in `seq 6`;do touch stu_161226_${i}_finished.jpg;done
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_1_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_2_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_3_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_4_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_5_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_6_finished.jpg
开始修改
[root@1-241 tmp]# for i in `ls *.jpg`;do mv "$i" "${i%finished*}.jpg"; done
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_1_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_2_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_3_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_4_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_5_.jpg
2. 功能描述
问题2:把下面文件的jpg变成html扩展名:
创建测试数据
[root@1-241 tmp]# touch stu_161226_{1..6}_finished.jpg
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.jpg
开始修改
[root@1-241 tmp]# for i in `ls *.jpg`; do mv $i ${i/%jpg/html}; done
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.html
3. 小结:
mv $i ${i%.jpg}.html
mv $i `echo $i |sed 's/jpg/html/g'`
mv $i `echo "${i/%jpg/html}"`
4. 利用awk处理
[root@1-241 tmp]# ls *.jpg
stu_161226_1_finished.jpg stu_161226_3_finished.jpg stu_161226_5_finished.jpg
stu_161226_2_finished.jpg stu_161226_4_finished.jpg stu_161226_6_finished.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0}'
stu_161226_1_finished.jpg
stu_161226_2_finished.jpg
stu_161226_3_finished.jpg
stu_161226_4_finished.jpg
stu_161226_5_finished.jpg
stu_161226_6_finished.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0,$1 }'
stu_161226_1_finished.jpg stu_161226_1_
stu_161226_2_finished.jpg stu_161226_2_
stu_161226_3_finished.jpg stu_161226_3_
stu_161226_4_finished.jpg stu_161226_4_
stu_161226_5_finished.jpg stu_161226_5_
stu_161226_6_finished.jpg stu_161226_6_
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0,$1$2 }'
stu_161226_1_finished.jpg stu_161226_1_.jpg
stu_161226_2_finished.jpg stu_161226_2_.jpg
stu_161226_3_finished.jpg stu_161226_3_.jpg
stu_161226_4_finished.jpg stu_161226_4_.jpg
stu_161226_5_finished.jpg stu_161226_5_.jpg
stu_161226_6_finished.jpg stu_161226_6_.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print "mv " $0,$1$2}'
mv stu_161226_1_finished.jpg stu_161226_1_.jpg
mv stu_161226_2_finished.jpg stu_161226_2_.jpg
mv stu_161226_3_finished.jpg stu_161226_3_.jpg
mv stu_161226_4_finished.jpg stu_161226_4_.jpg
mv stu_161226_5_finished.jpg stu_161226_5_.jpg
mv stu_161226_6_finished.jpg stu_161226_6_.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print "mv " $0,$1$2}' |bash
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_.jpg
-rw-r--r--. 1 rootrm root 0 12月 23 16:53 stu_161226_6_.jpg
5. 利用rename更改
[root@1-241 tmp]# touch stu_161226_{1..6}_finished.jpg
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.jpg
[root@1-241 tmp]# rename "finished" "" *.jpg
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_1_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_2_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_3_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_4_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_5_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_6_.jpg
6:拓展:其他变量的替换
变量替换表:

7. 下面依次举例说明:
1、${value:-word} 当变量未定义或者值为空时,返回值为word内容,否则返回变量的值
举例:
[root@1-241 ~]# aa=${bb:-word}
[root@1-241 ~]# echo $bb
==>这里是空
[root@1-241 ~]# echo $aa
word
8. ${value:=word}
与前者类似,只是若变量未定义或者值为空时,在返回word的值得同时将word赋值给value
[root@1-241 ~]# aa=${bb:=word}
[root@1-241 ~]# echo $bb
word
[root@1-241 ~]# echo $aa
word
shell-批量修改文件名及扩展名多案例的更多相关文章
- [转载][记录]shell 批量修改文件名
参考了:[新手入门] shell脚本批量修改文件名 4楼回复 我刚好是在vagrant+ubuntu中进行开发,windows手动修改太麻烦. #!/bin/ksh ls *.htm | while ...
- 【Linux】Shell批量修改文件名
修改文件名,替换中间字符: 例如:ABC_define_EFG.jpg,要把中间的define替换成argument: 用如下脚本即可: for var in *; do mv "$var& ...
- Linux Shell 批量更换文件名或后缀名
把下列所有.c的文件名修改为.cc rename .c .cc *.c
- shell批量修改文件名
[root@localhost file1]# ls a.htm b.htm c.htm d.htm pl.sh [root@localhost file1]# vi pl.sh #!/bin/bas ...
- 初学shell,为了练习sed,写了个简单的批量修改文件名的脚本,后来执行时发现系统竟然自带有一个rename命令,顺便也记下了
1 #!/bin/bash 2 <<Comment 3 批量修改文件名的脚本 4 2015/10/24 5 webber 6 Comment 7 ARGS=2 ...
- linux批量修改文件名的shell脚本
linux中批量修改文件名的shell脚本代码,主要是使用了rename,结合shell,喜欢的朋友可以参考下 使用 rename 命令 ======================== NAME ...
- Shell获取文件的文件名和扩展名的例子
这篇文章主要介绍了Shell获取文件的文件名和扩展名的例子,简明版的代码实例,看了就懂,需要的朋友可以参考下 basename example.tar.gz .tar.gz # => examp ...
- shell脚本:批量修改文件名
参考链接1:shell脚本:批量修改文件名(删除文件名中字符) 参考链接2:linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 ) 参考链接3:每天一个linux ...
- Python批量修改文件名
处理语料库时,有些文件名字很不规则,为了方便处理,同义按数字顺序修改名称,主要是用到os模块: import os def RenameFiles(srcdir): #将目录下所有的文件命名为数字开头 ...
随机推荐
- java-数组的排序
package day02; public class SelectSort { public static void selectSort(int[] arr){ for(int x=0;x< ...
- AutoGenerator自动生成代码
程序猿学社: https://blog.csdn.net/qq_16855077/article/details/105316295
- MySQL查询point类型类型的坐标,返回经度纬度
location字段为point类型的空间坐标 SELECT id, name, address, x(location) as 经度, Y(location) as 纬度, ROUND( 6378. ...
- Linux下安装Sublime Text 3 及使用快捷方式
1.添加sublime text3的仓库 首先按下快捷键ctrl+alt+t打开终端: 在终端输入:sudo add-apt-repository ppa:webupd8team/sublime-te ...
- python:接口开发
一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务.本文就用flask来开发一个接口. flask需要先安装再引用.pip install flask ...
- JS -- DOM(文档对象模型)
认识DOM(文档对象模型) DOM(Document Object Model):定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). < ...
- [LeetCode]面试题53 - I. 在排序数组中查找数字 I(二分);面试题53 - II. 0~n-1中缺失的数字(二分)
##面试题53 - I. 在排序数组中查找数字 I ###题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 ...
- Oracle数据库sqlldr工具的使用
sqlldr导入文本内容到数据库表时,需要指定一个ctl文件(控制文件),通过该文件来完成数据的导入. 1 首先创建一个表student create table student( stu_id nu ...
- Vant IndexBar 在小程序中的简单使用
这篇文章是老王的朋友超超提供的,上午已经更新到原创微信公众号「软件老王」,链接,欢迎各位朋友关注老王的原创公号! 先看下最终效果图,主要是渲染一个A - Z 的 通讯录.同样的,如果你要做的是城市列表 ...
- ribbon源码(1) 概述
ribbon的核心功能是提供客户端在进行网络请求时负载均衡的能力.主要有以下几个模块: 负载均衡器模块 负载均衡器模块提供了负载均衡能力,详细参见ribbon源码之负载均衡器. 配置模块 配置模块管理 ...