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. [BUUOJ记录] [强网杯 2019]随便注(三种方法)

    本题主要考察堆叠注入,算是比较经典的一道题,在i春秋GYCTF中也出现了本题的升级版 猜测这里的MySQL语句结构应该是: select * from words where id='$inject' ...

  2. 学会BeanShell,才敢说自己懂Jmeter

    jmeter的BeanShell Sampler,可以直接引用java代码,有下面3种方式: 1.直接输入java代码 2.导入java文件 3.导入class文件 BeanShell脚本访问变量主要 ...

  3. 3. 站在使用层面,Bean Validation这些标准接口你需要烂熟于胸

    乔丹是我听过的篮球之神,科比是我亲眼见过的篮球之神.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免 ...

  4. linux安装dubbo与zookeeper(一)

    所需工具: jdk1_7.tar.gz dubbo-admin-2.5.4.war(此文件不需解压) zookeeper.tar.gz tomcat7.0.tar.gz 以上文件下载需根据自己的电脑系 ...

  5. leetcode刷题-57插入区间

    题目 给出一个无重叠的 ,按照区间起始端点排序的区间列表. 在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间). 示例 1: 输入:intervals = ...

  6. jmeter压测以及用Badboy录脚本

    一.压测时的基本配置: 1.设置线程数.延迟几秒.循环次数打勾表示一直去循环.调度器打勾可以填写持续时间.启动时间等 线程数:就是并发的用户数   N Ramp-Up Period(in second ...

  7. python字符串和列表小案例

    python 目录 python 一.字符串 1.给定一个字符串,利用切片将字符串反转 2.给定一个字符串,将空格替换为逗号 3.给定一个字符串,大写改为小写 4.str = '' ,li = ['l ...

  8. java之死锁

    转载自 https://www.cnblogs.com/xiaoxi/p/8311034.html 一.死锁的定义 多线程以及多进程改善了系统资源的利用率并提高了系统 的处理能力.然而,并发执行也带来 ...

  9. google protocol buffer——protobuf的问题和改进2

    这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 在上一篇文章中,我们举例了 ...

  10. Windows批处理(cmd/bat)常用命令学习

    前言 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务.用户只需双击批处理文件便可执行任务,而无需重复输入相同指令.编写批处理文件非常简单,但难点在于确保一切按顺序 ...