1. 通过专业的改名命令rename实现

[root@oldboy oldboy]# ll
total
-rw-r--r-- root root Nov : stu_102999_1_finished.jpg
-rw-r--r-- root root Nov : stu_102999_2_finished.jpg
-rw-r--r-- root root Nov : stu_102999_3_finished.jpg
-rw-r--r-- root root Nov : stu_102999_4_finished.jpg
-rw-r--r-- root root Nov : stu_102999_5_finished.jpg
[root@oldboy oldboy]# rename "finished" "" * ==>执行批量改名
[root@oldboy oldboy]# ll
total
-rw-r--r-- root root Nov : stu_102999_1_.jpg
-rw-r--r-- root root Nov : stu_102999_2_.jpg
-rw-r--r-- root root Nov : stu_102999_3_.jpg
-rw-r--r-- root root Nov : stu_102999_4_.jpg
-rw-r--r-- root root Nov : stu_102999_5_.jpg
拓展下:改扩展名的方法
[root@oldboy oldboy]# rename .jpg .oldboy *
[root@oldboy oldboy]# ll
total
-rw-r--r-- root root Nov : stu_102999_1_.oldboy
-rw-r--r-- root root Nov : stu_102999_2_.oldboy
-rw-r--r-- root root Nov : stu_102999_3_.oldboy
-rw-r--r-- root root Nov : stu_102999_4_.oldboy
-rw-r--r-- root root Nov : stu_102999_5_.oldboy

2. ls结合awk实现

[root@oldboy oldboy]# ll
total
-rw-r--r-- root root Nov : stu_102999_1_finished.jpg
-rw-r--r-- root root Nov : stu_102999_2_finished.jpg
-rw-r--r-- root root Nov : stu_102999_3_finished.jpg
-rw-r--r-- root root Nov : stu_102999_4_finished.jpg
-rw-r--r-- root root Nov : stu_102999_5_finished.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print $0}'
stu_102999_1_finished.jpg
stu_102999_2_finished.jpg
stu_102999_3_finished.jpg
stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print $1}'
stu_102999_1_
stu_102999_2_
stu_102999_3_
stu_102999_4_
stu_102999_5_
[root@oldboy oldboy]# ls |awk -F 'finished' '{print $2}'
.jpg
.jpg
.jpg
.jpg
.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print $1$2}'
stu_102999_1_.jpg
stu_102999_2_.jpg
stu_102999_3_.jpg
stu_102999_4_.jpg
stu_102999_5_.jpg
[root@oldboy oldboy]# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash
[root@oldboy oldboy]# ll
total
-rw-r--r-- root root Nov : stu_102999_1_.jpg
-rw-r--r-- root root Nov : stu_102999_2_.jpg
-rw-r--r-- root root Nov : stu_102999_3_.jpg
-rw-r--r-- root root Nov : stu_102999_4_.jpg
-rw-r--r-- root root Nov : stu_102999_5_.jpg

3. shell脚本for循环加变量的部分截取方法

[root@oldboy oldboy]#ls -l
total
-rw-r--r-- root root Nov : change_file_name.sh
-rw-r--r-- root root Nov : stu_102999_1_finished.jpg
-rw-r--r-- root root Nov : stu_102999_2_finished.jpg
-rw-r--r-- root root Nov : stu_102999_3_finished.jpg
-rw-r--r-- root root Nov : stu_102999_4_finished.jpg
-rw-r--r-- root root Nov : stu_102999_5_finished.jpg
[root@oldboy oldboy]#cat change_file_name.sh
#!/bin/sh
# oldboy QQ:
for file in `ls ./*.jpg`
do
/bin/mv $file `echo "${file%finished*}.jpg"` #这里就是变量的截取新方法,在老男孩的shell编程课程中会讲到此用法。
done
[root@oldboy oldboy]#sh change_file_name.sh
[root@oldboy oldboy]#ls -l
total 4
-rw-r--r-- 1 root root 114 Nov 14 00:21 change_file_name.sh
-rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 14 00:23 stu_102999_5_.jpg
特别提示:本脚本和文件在同一目录

4. shell脚本for循环结合sed实现

[检查数据]
[root@oldboy oldboy]# ll
total
-rw-r--r-- root root Oct : oldboy_modi_file.sh
-rw-r--r-- root root Oct : stu_102999_1_finished.jpg
-rw-r--r-- root root Oct : stu_102999_2_finished.jpg
-rw-r--r-- root root Oct : stu_102999_3_finished.jpg
-rw-r--r-- root root Oct : stu_102999_4_finished.jpg
-rw-r--r-- root root Oct : stu_102999_5_finished.jpg [开发脚本]
[root@oldboy oldboy]# cat oldboy_modi_file.sh
#!/bin/sh
for file in `ls ./*.jpg`
#shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名
do
mv $file `echo $file|sed 's/finished//g'`
#使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。
done
#特别提示:通过本题,可以学习到for循环的使用,及mv、sed等命令的使用 [执行脚本]
[root@oldboy oldboy]# sh oldboy_modi_file.sh [检查结果]
[root@oldboy oldboy]# ll
total 4
-rw-r--r-- 1 root root 85 Oct 2 12:54 oldboy_modi_file.sh
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_5_.jpg

转自老男孩博客:http://oldboy.blog.51cto.com/2561410/711342

Linux学习之批量修改文件名的更多相关文章

  1. linux rename命令批量修改文件名

    修改文件名可以用mv命令来实现 mv filename1 filename2 1 但如果批量修改还是使用rename命令更为方便 现在我们有a b c d 四个文件 增加后缀 rename 's/$/ ...

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

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

  3. linux下C++遍历文件夹下的全部文件;Windows/Linux下C++批量修改文件名,批量删除文件

    Linux下 C++遍历目录下所有文件 rename(image_path.c_str(), image_path_new.c_str()); remove(image_path_move.c_str ...

  4. Linux利用sed批量修改文件名

    初始文件名 # ls -lh total 5.5G -rw-r--r-- 1 root root 193K Sep 28 09:38 20180908.txt drwxr-xr-x 2 root ro ...

  5. Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键 批量修改文件名等

    http://blog.sina.com.cn/s/blog_62e7fe670101dg9d.html linux下二进制文件查找: strings 0000.ts | grep -o " ...

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

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

  7. Linux下批量修改文件名(rename)

    原文地址: http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修 ...

  8. linux 批量修改文件名 文件名只保留部分,去掉部分

    问题:linux系统中文件名包含中文,导致页面访问不了文件.就是上条博客中的解决方法二遗留问题. 文件名中有以下格式:TC2_诺而达铜管(中山)有限公司.pdf ,要改为TC2.pdf,去掉中文部分 ...

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

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

随机推荐

  1. android——inflater 用法(转)

    在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例 ...

  2. 无限级分类 mysql设计

  3. am335x 10.1"电容touch 不能识别

    /**************************************************************** * am335x 10.1"电容touch 不能识别 * ...

  4. PHP wamp server问题

    只能说各种不顺,天热人烦! 问题一.wampapache服务不能启动之VCRUNTIME140.DLL文件丢失. 这个是缺少VC运行库,查找并安装相应的文件即可. 问题二.wampapche服务不能启 ...

  5. C# 发邮件 服务器响应为: 5.7.0 Must issue a STARTTLS command first

    The SMTP server requires a secure connection or the client was not authenticated. The server respons ...

  6. iOS推送证书从申请到使用

    关于这个话题,已经有非常多写的非常好的文章了.可是,在自己做的过程中,即使别人写的已经非常好了,还是会遇到这样那样的问题. 自己还是再写一遍吧. 本文记录了从无到有申请证书,到最后可以发出通知.当然, ...

  7. C/C++,从未过时的编程语言之父

    C/C++,持续火爆的编程语言之父 --訪传智播客C/C++学院院长传智·萧峰 编程语言作为实现互联网+基础必备工具,构建着互联网行业美轮美奂的大时代.作为编程语言之父--C语言,更是如鱼得水,在甘愿 ...

  8. 监视在input框中按下回车(enter) js实现

    function getKey(event) { if (event.keyCode == 13) { alert("我是回车键"); } } <input type=&qu ...

  9. Servlet+Ajax实现搜索智能提示

    一般在百度搜索框输入关键词时,会弹出一些相关信息提示,方便点选: 页面(search.jsp): <input type="text" name="keyWords ...

  10. java web - 为什么要使用spring struts

    1.软件里有很多优秀的框架,有一种类型的框架,它的特点是建立在一个现有技术的基础上,提供和现有技术一样业务功能的技术框架,这个新的技术框架比原技术更加易用,更加健壮同时功能更加强大,例如:jQuery ...