Linux学习之批量修改文件名
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学习之批量修改文件名的更多相关文章
- linux rename命令批量修改文件名
修改文件名可以用mv命令来实现 mv filename1 filename2 1 但如果批量修改还是使用rename命令更为方便 现在我们有a b c d 四个文件 增加后缀 rename 's/$/ ...
- 【Linux】Shell批量修改文件名
修改文件名,替换中间字符: 例如:ABC_define_EFG.jpg,要把中间的define替换成argument: 用如下脚本即可: for var in *; do mv "$var& ...
- linux下C++遍历文件夹下的全部文件;Windows/Linux下C++批量修改文件名,批量删除文件
Linux下 C++遍历目录下所有文件 rename(image_path.c_str(), image_path_new.c_str()); remove(image_path_move.c_str ...
- 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 ...
- Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键 批量修改文件名等
http://blog.sina.com.cn/s/blog_62e7fe670101dg9d.html linux下二进制文件查找: strings 0000.ts | grep -o " ...
- linux批量修改文件名的shell脚本
linux中批量修改文件名的shell脚本代码,主要是使用了rename,结合shell,喜欢的朋友可以参考下 使用 rename 命令 ======================== NAME ...
- Linux下批量修改文件名(rename)
原文地址: http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修 ...
- linux 批量修改文件名 文件名只保留部分,去掉部分
问题:linux系统中文件名包含中文,导致页面访问不了文件.就是上条博客中的解决方法二遗留问题. 文件名中有以下格式:TC2_诺而达铜管(中山)有限公司.pdf ,要改为TC2.pdf,去掉中文部分 ...
- shell脚本:批量修改文件名
参考链接1:shell脚本:批量修改文件名(删除文件名中字符) 参考链接2:linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 ) 参考链接3:每天一个linux ...
随机推荐
- UI领域中常常听见的''modal''到底是什么?
模态窗口其实就是个弹窗.... 问题总结 用户需要采取操作或取消覆盖,直到他可以继续与原始页面进行交互, 这是最原始的modal定义, 本质上是页面在时间维度上的中断系统: 来自wiki百科: Mod ...
- Oracle的sql语句中关键字冲突用双引号
select distinc user from instrument where created>"TO_DATE"('2015-02-05 12:00:00', 'yyy ...
- 封装自己的yQuery
function myAddEvent(obj, sEv, fn) { if (obj.attachEvent) { obj.attachEvent('on' + sEv, fn) } else { ...
- R语言数据的导入与导出
1.R数据的保存与加载 可通过save()函数保存为.Rdata文件,通过load()函数将数据加载到R中. > a <- 1:10 > save(a,file='d://data/ ...
- variable `xxx' has initializer but incomplete type
错误:variable `xxx' has initializer but incomplete type 原因:xxx对应的类型没有找到,只把xxx声明了但是没给出定义.编译器无从确认你调用的构造函 ...
- HBase在搜狐内容推荐引擎系统中的应用
转自:http://www.aboutyun.com/thread-7297-1-1.html Facebook放弃Cassandra之后,对HBase 0.89版本进行了大量稳定性优化,使它真正成为 ...
- 下面关于XML叙述不正确的是( )
A.XML标记必须关闭 B.XML是大小写敏感的 C.XML文件只能跟DTD文件一块使用 D.XML和XSL结合可以在浏览器上显示 解答:C
- e553. 作为浏览器访问URL
// See also e551 精简的Applet try { URL url = new URL(getDocumentBase(), "http://hostname.com/page ...
- asp.net管线
- 【Java面试题】22 JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?
throws是获取异常throw是抛出异常try是将会发生异常的语句括起来,从而进行异常的处理,catch是如果有异常就会执行他里面的语句,而finally不论是否有异常都会进行执行的语句. thro ...