文档章节

批量修改文件名及扩展名

eddy_linux
 eddy_linux
发布于 2015/12/01 00:39
字数 1059
阅读 77
收藏 8
1.变量基础知识
${var}	        变量var的值, 与$var相同
 	 
${var-DEFAULT}	如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:-DEFAULT}	如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
 	 
${var=DEFAULT}	如果var没有被声明, 那么就以$DEFAULT作为其值 *
${var:=DEFAULT}	如果var没有被声明, 或者其值为空, 那么就以$DEFAULT作为其值 *
 	 
${var+OTHER}	如果var声明了, 那么其值就是$OTHER, 否则就为null字符串
${var:+OTHER}	如果var被设置了, 那么其值就是$OTHER, 否则就为null字符串
 	 
${var?ERR_MSG}	如果var没被声明, 那么就打印$ERR_MSG *
${var:?ERR_MSG}	如果var没被设置, 那么就打印$ERR_MSG *
 	 
${!varprefix*}	匹配之前所有以varprefix开头进行声明的变量
${!varprefix@}	匹配之前所有以varprefix开头进行声明的变量

#!/bin/bash
#
#

#定义path变量
path = /data/back/
#搜索path路径下包含tar.gz的文件并删除
find $path -name "*.tar.gz" -type f |xagrs rm -f

#优化之后
find ${path:=/data/back/} -name "*.tar.gz" -type f |xagrs rm -f
#此方式path变量没有赋值的情况,有赋值使用赋值,没有赋值使用=号后面的值
#此方式主要针对删除操作

2.变量子串知识
${#string}	                        $string的长度 	 
${string:position}	                在$string中, 从位置$position开始提取子串
${string:position:length}	        在$string中, 从位置$position开始提取长度为$length的子串 	 
${string#substring}	                从变量$string的开头, 删除最短匹配$substring的子串
${string##substring}	                从变量$string的开头, 删除最长匹配$substring的子串
${string%substring}	                从变量$string的结尾, 删除最短匹配$substring的子串
${string%%substring}	                从变量$string的结尾, 删除最长匹配$substring的子串 	 
${string/substring/replacement}	        使用$replacement, 来代替第一个匹配的$substring
${string//substring/replacement}	使用$replacement, 代替所有匹配的$substring
${string/#substring/replacement}	如果$string的前缀匹配$substring, 那么就用$replacement来代替匹配到的$substring
${string/%substring/replacement}	如果$string的后缀匹配$substring, 那么就用$replacement来代替匹配到的$substring

批量修改文件名
-rw-r--r-- 1 root root 0 Dec  1 00:10 eddy_10299_1_finished.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:10 eddy_10299_2_finished.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:10 eddy_10299_3_finished.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:10 eddy_10299_4_finished.jpg
#!/bin/bash
# author:eddy date:2015-11-30
# rename file
# v1.0

for  i in `ls temp/*.jpg`
do
    mv $i `echo ${i%_finished*}.jpg`
done
以上方式偏于复杂及不好理解
使用linux自带的rename命令进行批量重命名
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_10.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_1.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_2.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_3.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_4.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_5.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_6.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_7.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_8.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 eddy_9.txt
[root@eddy temp]# rename "eddy" "yys" eddy_*
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_10.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_1.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_2.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_3.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_4.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_5.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_6.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_7.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_8.txt
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_9.txt
批量修改扩展名
依然可以用rename实现
[root@eddy temp]# rename "txt" "jpg" yys_*
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_10.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_1.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_2.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_3.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_4.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_5.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_6.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_7.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_8.jpg
-rw-r--r-- 1 root root 0 Dec  1 00:33 yys_9.jpg


© 著作权归作者所有

共有 人打赏支持
eddy_linux
粉丝 22
博文 135
码字总数 188789
作品 0
成都
程序员
私信 提问
Mac / Linux Shell 批量重命名的方法总览

Linux Shell 批量重命名的方法总览 0、用类似 GPRename 这样的图形软件进行批量重命名 1、删除所有的 .bak 后缀: rename 's/.bak$//' .bak 2、把 .jpe 文件后缀修改为 .jpg: rename 's/.j...

穆思阁
2015/03/01
0
0
Linux下批量修改文件名(rename)

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

街角守望妳
2017/08/08
0
0
[转] Linux下批量修改文件名(rename)

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

红薯
2012/10/08
2.1K
0
批量文件重命名工具--BFR

BFR(Batch File Rename) 批量文件重命名工具 开发环境 Windows 10 + Visual Studio 2013 + .NetFramework 2.0 功能 批量替换文件名中内容 按序号批量重命名 扩展名字母大小写转换 修改文件的...

seayxu
2016/04/14
320
0
python编程练习2

第二练如何快速实现Windows中的批量操作。 题目:在文件夹里有六十个RM格式的视频文件,我现在需要把它们的文件名都提取出来,并去掉文件的扩展名,保存在其它文件夹中供其它用途: import o...

haerbin1
2014/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MySQL中update修改数据与原数据相同会再次执行吗

背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 测试环境 MySQL5.7.25 Centos 7.4 binlog_format为ROW 参数 root@localhost...

阿里云官方博客
7分钟前
0
0
ZStack部署实战之VDI异构部署

作者:ZStack社区 蒋克勤 前言 大家都知道ZStack是一个自主开发、功能齐全、轻量级的私有云和混合云平台,同时,ZStack作为一个开放的云平台,也能够支持各种云桌面终端的接入!大家可以结合...

ZStack社区版
9分钟前
0
0
我的漂泊一生......

突然想起来,给自己的这辈子旅程画个线路图。 懵懂期 青春期 转变期 转变期(二) 现在 感谢 感谢生命里出现的 好的差的,那都是一段旅程 特别感谢几个人对我的帮助: 英泰老叶、工贸老陈、天...

o0无忧亦无怖
10分钟前
5
2
难越高并发这座火焰山?试一试Iron Cloud这朵筋斗云

强如银行巨头,也有难翻的火焰山? 伴随互联网+ 趋势的推进,越来越多金融公司业务渠道从线下转移到线上,业务场景发生质的转变与提升。 支付场景多样化和人们消费水平升级,随之而来的是各大...

heishaovvv
21分钟前
0
0
在线官网Spring Initializr 或 IntelliJ IDEA 快速搭建springboot项目

Spring Boot是由Pivotal团队提供的全新框架,设计目的是用来简化新Spring应用的初始搭建以及开发过程。它主要推崇的是'消灭配置’,实现零配置。 那么,如何快速新建一个一个springboot项目脚...

Mr_ET
22分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部