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初探(1)之登录终探
上一章讲了表单验证,数据验证和加密.这一章,将研究服务器和数据库的交互过程. 后端服务器有两种主流的形式,SQL数据库和NOSQL数据库.其中MYSQL属于SQL数据库,REDIS属于非SQL数据库. ...
- vant ui TabBar封装
TabBar.vue基本上是放在App.vue里面,都存在 <template> <div id="app"> <home-tab-bar :tar- ...
- Ajax请求携带Cookie
目录 xhr ajax cookie跨域处理 客户端 服务端 服务端设置跨域的几种方式 方式一 重写addCorsMappings方法 方式二 对单个接口处理 方式三 @CrossOrigin注解 方 ...
- Java中nextInt和nextLine同时使用出现的问题
代码: package com.ins1; import java.util.*; public class test { public static void main(String[] args) ...
- Tomcat源码分析(下载、启动)
1.下载Tomcat源代码: https://tomcat.apache.org/download-80.cgi 2. 解压以及创建必要目录和配置 解压.新建catalina-home目录,同时将目录 ...
- Prmise.all的简单实现
注意点 入参一般是个由Promise实例组成的数组,但是也可以不是数组,但必须具有 Iterator 接口,且返回的每个成员都是 Promise 实例.若参数如果不是 Promise 实例,就会先调用 ...
- 营销经验总结:如何才能提升h5游戏代入感?
HTML5游戏拥有即点即玩,无需下载,并具备传播性广的特点,这就使得商家看到了无限商机,如何让产品更加深入人心,是游戏推广最为重要的环节.优秀的代入感才是游戏产品宣传的关键,那么有哪些要素的支撑才能确 ...
- WinDbg排查CPU高的问题
一.概述 在Window服务器部署程序后,可能因为代码的不合理或者其他各种各样的问题,会导致CPU暴增,甚至达到100%等情况,严重危及到服务器的稳定以及系统稳定,但是一般来说对于已发布的程序,没法即 ...
- [LeetCode]1114. 按序打印(并发)
####题目 我们提供了一个类: public class Foo { public void one() { print("one"); } public void tw ...
- Mybatis和Mybatis-Plus时间范围查询,亲测有效
一.mysql 1.传入时间范围参数类型是字符串 <if test="startTime!=null and startTime.trim() neq ''"> and ...