#########################################################
#linux下批量修改文件名精彩解答案例分享
#date:21:34 2011-11-10
#作者:老男孩 创办了《老男孩linux实战培训》为广大linux爱好者提供服务。
#QQ:31333741 MAIL:oldboy521@hotmail.com
#QQ交流群:45039636   
#blog: http://oldboy.blog.51cto.com
#psite: http://oldboy.cc(即将开放)
#pblog:http://etiantian.org
##########################################################
问题:见一兄弟的需求,下面我截的图。

特别说明下,有的兄弟很细心,上面截图中说的是去掉_finished我的解答是针对去掉finished的,不过不影响大局,特请大家注意下。

解答:
[准备测试数据]
mkdir /oldboy cd /oldboy
touch stu_102999_1_finished.jpg
touch stu_102999_2_finished.jpg
touch stu_102999_3_finished.jpg
touch stu_102999_4_finished.jpg
touch stu_102999_5_finished.jpg

方法1:shell脚本for循环结合sed实现
[检查数据]
[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_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root  0 Oct  2 12:50 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

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

[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_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_5_finished.jpg
[root@oldboy oldboy]#cat change_file_name.sh
#!/bin/sh
# oldboy QQ:31333741
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
特别提示:本脚本和文件在同一目录

方法三:ls结合awk实现
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 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 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_.jpg
方法四:通过专业的改名命令rename实现
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_finished.jpg
[root@oldboy oldboy]# rename "finished" ""  * ==>执行批量改名
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.jpg
拓展下:改扩展名的方法
[root@oldboy oldboy]# rename .jpg .oldboy *
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.oldboy
特别提示:如果大家有需要解答问题可以,blog留言给我。我们互相交流,共同切磋,共同进步。
兄弟们啊,这个问题并不重要,解答问题的思路才是最重要的。

linux下批量修改文件名精彩解答案例分享相关推荐

  1. Linux下批量修改文件名

    ##################################### #Linux下批量修改文件名案例分享 #date:2019-05-09 #Discuz论坛:www.slinuxserver ...

  2. linux 批量更换文件名,Linux下批量修改文件名的方法

    Linux下批量修改文件名的方法 在Linux环境下修改文件名可以有不同的命令方式,比如rename.mv都可以进行修改,如果用户正在了解这方面的知识,可以阅读下文了解Linux修改文件名以及批量修改 ...

  3. linux批量修改 文件名编码,linux下批量修改文件名

    linux下批量修改文件名 0.问题来源,想把一部分文件加上日期序.也就是在文件名称前加上当前的年月日进行输出. 获取日期格式如下 Zianed@ubuntu:~/public_web_sSmO9OU ...

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

    1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修改文件名, 不过rename实在太方便了 比如把所有的表为cdb1_* 修改为cdb_*的 在本目录下 只需要# rena ...

  5. linux 批量替换文件cp,Linux下批量修改文件名

    2, Perl 版本的批量重命名,带有Perl的好处是,你可以使用正则表达式来完成很奇特的功能. perl 版本的参数格式: rename  perlexpr files 注意,perl版本的rena ...

  6. linux批量修改文件名多目录,Linux下批量修改文件名

    2, Perl 版本的批量重命名,带有Perl的好处是,你可以使用正则表达式来完成很奇特的功能. perl 版本的参数格式: rename  perlexpr files 注意,perl版本的rena ...

  7. linux下批量修改文件名的方法

    最简单易用的rename命令:rename orange  apple * 就会将该目录下的所有文件名中 orange 字样修改成apple; 非常便捷.

  8. 【Linux】批量修改文件名

    [Linux]批量修改文件名 文章目录 [Linux]批量修改文件名 1. 介绍 2. rename命令 3. 示例 1. 介绍 在Linux中,当你想要改变一个文件名,使用mv命令就好了. 然而mv ...

  9. 批量修改linux服务器密码,Linux下批量修改服务器用户密码方法步骤

    Linux下批量修改服务器用户密码方法步骤 密码快要过期.由于机器数量众多,因此采用批量修改密码的方式来进行处理. 下面是具体步骤: 1.配置ssh免key # ssh-keygen -t rsa - ...

最新文章

  1. 面试题:mysql 一棵 B+ 树能存多少条数据?
  2. 删除字符串中多余的空白字符和空行(C语言实现)
  3. 使用okhttp3执行post请求
  4. 启程 一些高考后的想法
  5. 美团点评2020年测试工程师笔试题
  6. SSZipArchive的使用详解和遇到的问题
  7. linux调用线程函数,作为线程调用的C函数-Linux Userland程序
  8. android客户端中间人攻击,Android 中间人攻击
  9. bigdecimal乘法_Java面试题之BigDecimal比较大小问题
  10. 36. In Depth Magento System Configuration
  11. mysql主从同步搭建过程_mysql 主从复制搭建详细步骤
  12. 最全的微信小程序源代码
  13. sqldeveloper 工具的使用——连接数据库的介绍
  14. Fedora 9与Windows共享文件
  15. 泛微E8使用 xlsx.core.js 导入页面数据
  16. 最小行走距离(dfs+虚树)
  17. Python中numpy的np.where()函数
  18. 魔术师要每位观众心里想一个三位数abc(abc分别是百位、十位和个位数字)然后魔术师让观众心中记下acb、bac、bca、cab、cba这5个数的和值。观众说出这个和是多少,则魔术师一定知道原数为多少
  19. document的用法
  20. Python中运用的基础库

热门文章

  1. 倒计时2天!AI大咖云集、30场技术公开课,还有乐队... 年度最有意思的AI开发者活动来了!...
  2. 孙正义60亿贱卖波士顿动力,狂降至3折,现代汽车接盘
  3. 传奇芯片设计大神Jim Keller又离职了,英特尔失了总设计师,网友喊话雷军:挖他!...
  4. leetcode 刷题之路 64 Construct Binary Tree from Inorder and Postorder Traversal
  5. 前端那点事儿——Tocify自动生成文档目录
  6. 如何重装Citrix XenServer不丢失SR数据
  7. flex中toolTip汇总
  8. Java EE WEB工程师培训-JDBC+Servlet+JSP整合开发之13.Form表单处理(1)
  9. java 原生sql批量插入,Java对象集合转MySQL批量插入语句
  10. 算力网络 — 技术架构