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-批量修改文件名及扩展名多案例的更多相关文章

  1. [转载][记录]shell 批量修改文件名

    参考了:[新手入门] shell脚本批量修改文件名 4楼回复 我刚好是在vagrant+ubuntu中进行开发,windows手动修改太麻烦. #!/bin/ksh ls *.htm | while ...

  2. 【Linux】Shell批量修改文件名

    修改文件名,替换中间字符: 例如:ABC_define_EFG.jpg,要把中间的define替换成argument: 用如下脚本即可: for var in *; do mv "$var& ...

  3. Linux Shell 批量更换文件名或后缀名

    把下列所有.c的文件名修改为.cc rename .c .cc *.c

  4. shell批量修改文件名

    [root@localhost file1]# ls a.htm b.htm c.htm d.htm pl.sh [root@localhost file1]# vi pl.sh #!/bin/bas ...

  5. 初学shell,为了练习sed,写了个简单的批量修改文件名的脚本,后来执行时发现系统竟然自带有一个rename命令,顺便也记下了

    1 #!/bin/bash   2 <<Comment   3 批量修改文件名的脚本   4 2015/10/24   5 webber   6 Comment   7 ARGS=2   ...

  6. linux批量修改文件名的shell脚本

    linux中批量修改文件名的shell脚本代码,主要是使用了rename,结合shell,喜欢的朋友可以参考下 使用 rename 命令  ========================  NAME ...

  7. Shell获取文件的文件名和扩展名的例子

    这篇文章主要介绍了Shell获取文件的文件名和扩展名的例子,简明版的代码实例,看了就懂,需要的朋友可以参考下 basename example.tar.gz .tar.gz # => examp ...

  8. shell脚本:批量修改文件名

    参考链接1:shell脚本:批量修改文件名(删除文件名中字符) 参考链接2:linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 ) 参考链接3:每天一个linux ...

  9. Python批量修改文件名

    处理语料库时,有些文件名字很不规则,为了方便处理,同义按数字顺序修改名称,主要是用到os模块: import os def RenameFiles(srcdir): #将目录下所有的文件命名为数字开头 ...

随机推荐

  1. java-数组的排序

    package day02; public class SelectSort { public static void selectSort(int[] arr){ for(int x=0;x< ...

  2. AutoGenerator自动生成代码

    程序猿学社: https://blog.csdn.net/qq_16855077/article/details/105316295

  3. MySQL查询point类型类型的坐标,返回经度纬度

    location字段为point类型的空间坐标 SELECT id, name, address, x(location) as 经度, Y(location) as 纬度, ROUND( 6378. ...

  4. Linux下安装Sublime Text 3 及使用快捷方式

    1.添加sublime text3的仓库 首先按下快捷键ctrl+alt+t打开终端: 在终端输入:sudo add-apt-repository ppa:webupd8team/sublime-te ...

  5. python:接口开发

    一.flask flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务.本文就用flask来开发一个接口. flask需要先安装再引用.pip install flask ...

  6. JS -- DOM(文档对象模型)

    认识DOM(文档对象模型) DOM(Document Object Model):定义访问和处理HTML文档的标准方法. DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). < ...

  7. [LeetCode]面试题53 - I. 在排序数组中查找数字 I(二分);面试题53 - II. 0~n-1中缺失的数字(二分)

    ##面试题53 - I. 在排序数组中查找数字 I ###题目 统计一个数字在排序数组中出现的次数. 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: 2 ...

  8. Oracle数据库sqlldr工具的使用

    sqlldr导入文本内容到数据库表时,需要指定一个ctl文件(控制文件),通过该文件来完成数据的导入. 1 首先创建一个表student create table student( stu_id nu ...

  9. Vant IndexBar 在小程序中的简单使用

    这篇文章是老王的朋友超超提供的,上午已经更新到原创微信公众号「软件老王」,链接,欢迎各位朋友关注老王的原创公号! 先看下最终效果图,主要是渲染一个A - Z 的 通讯录.同样的,如果你要做的是城市列表 ...

  10. ribbon源码(1) 概述

    ribbon的核心功能是提供客户端在进行网络请求时负载均衡的能力.主要有以下几个模块: 负载均衡器模块 负载均衡器模块提供了负载均衡能力,详细参见ribbon源码之负载均衡器. 配置模块 配置模块管理 ...