rename 批量修改文件名
1.rename的用法
- -v(verbose)打印被成功重命名的文件,即打印执行过程
- -n(no-act)只显示将被重命名的文件,而非实际进行重命名操作
- -f(force)覆盖已经存在的文件
- files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读
|
将(1).jpg
(2).jpg
…..
改为:
test_001.jpg
test_002.jpg
……
|
1、去掉括号
rename -n 's/[()]//g' *.jpg
2、继续重命名为想要的格式
rename -n 's/^/test_00/' *.jpg
|
解释:
-n直接打印结果在终端中而非实际执行
s代表substitution,替换的意思
[()]代表匹配[]中的内容
//两个斜杠之间是空代表替换为空的内容,相当于删除
g代表全部匹配,不加g的话默认只会匹配一个括号
^-在文件名称开头加字符
test_00-将名称前面添加上test_00
|
|
规则化数字编号名
将1.jpg, 2.jpg ..... 100.jpg
改为:
001.jpg,002.jpg,...023.jpg,...100.jpg
|
1.把1.jpg ..... 9.jpg 变换为001.jpg .... 009.jpg
rename 's/^/00/' [0-9].jpg
2. 把10.jpg ..... 99.jpg 变换为010.jpg ..... 090.jpg
rename 's/^/0/' [0-9][0-9].jpg
|
|
|
去除文件名中空格
|
1.老方法
find . -type f -name "* *" -print |while read name; do mv "${name}" `echo "${name}"|sed "s/[ ]\+/_/g"`;done
2.rename方法
rename "s/[ ]+/_/g" *
|
● 其中[ ]+表示空格出现一次或多次,空格可以用[:space:]代替,该命令可替换为[[:space:]]+
● 在sed中需要将+转义,但在rename中不能转义,因为rename 采用的是标准perl正则语法
● 从命令中能够看到sed与rename的区别,rename处理的是该目录下所能匹配到的所有文件,它将所有文件名作为处理的对象,而命令sed 处理的是文件内容,所以只能通过echo "文件名"|sed "s/[ ]\+/_/g的方式才能处理文件名
|
|
批量修改文件前缀
场景:folder A中有a.rtv b.a.c.imu a.t.gps a.y.ew.imu等等,想要将这些文件的文件名统一为test,后缀保持不变
|
一般的思路:
1.遍历folder,依次获取文件
2.获取文件后缀${pre}
3.使用mv ${file} test.${pre}
该方法中没有文件都要获取后缀再执行mv命令,灰常复杂
rename方法:
rename 's/.*\./test./' *
|
.*\.中.*代表匹配多次单个字符,\.代表对点进行转义。
|
|
其他:
|
rename 's/^/hello/' * 统一在文件头部添加上hello
rename 's/.html$/.htm/' * 统一把.html扩展名修改为.htm
rename 's/$/.zip/' * 统一在尾部追加.zip后缀:
rename 's/.zip$//' * 统一去掉.zip后缀
|
2.Perl正则表达式
|
匹配:m//
|
(可以省略m,直接写成/regexp/)
|
|
替换:s///
|
s/PATTERN/REPLACEMENT/egimosx
e 将右侧作为表达式计算。
g 全匹配
i 不区分大小写的模式匹配
m 将字符串视为多行。
o 只编译一次模式,即使其中的变量发生变化。
s 将字符串视为单行。
x 使用扩展正则表达式
|
|
转化:tr///
|
转化有两种等价表达方式,如下:
tr/SEARCHLIST/REPLACEMENTLIST/cds
y/SEARCHLIST/REPLACEMENTLIST/cds
c 补充 SEARCHLIST.
d 删除找到但未替换的字符
s 压缩重复的替换字符
|
|
rename -n 'tr/Sam3/Stm/' FastSpiSam3C.nc
替换字符短,用最后一个字符m替换3
|
FastSpiSam3C.nc renamed as FtstSpiStmmC.nc
|
|
rename -n 'tr/Sam3/Stm32/' FastSpiSam3C.nc
替换字符长,多出字符被忽略
|
FastSpiSam3C.nc renamed as FtstSpiStm3C.nc
|
|
x? 匹配 0 次或一次 x 字符串
|
\d 匹配一个数字的字符,和 [0-9] 语法一样
|
|
x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数
|
\d+ 匹配多个数字字符串,和 [0-9]+ 语法一样
|
|
x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数
|
\D 非数字,其他同 \d
|
|
.* 匹配 0 次或一次的任何字符
|
\D+ 非数字,其他同 \d+
|
|
.+ 匹配 1 次或多次的任何字符
|
\w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
|
|
{m} 匹配刚好是 m 个 的指定字符串
|
\w+ 和 [a-zA-Z0-9]+ 语法一样
|
|
{m,n}匹配在 m个 以上 n个 以下 的指定字符串
|
\W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
|
|
{m,} 匹配 m个 以上 的指定字符串
|
\W+ 和 [^a-zA-Z0-9]+ 语法一样
|
|
[] 匹配符合 [] 内的字符
|
\s 空格,和 [\n\t\r\f] 语法一样
|
|
[^] 匹配不符合 [] 内的字符
|
\s+ 和 [\n\t\r\f]+ 一样
|
|
[0-9]匹配所有数字字符
|
\S 非空格,和 [^\n\t\r\f] 语法一样
|
|
[a-z]匹配所有小写字母字符
|
\S+ 和 [^\n\t\r\f]+ 语法一样
|
|
[^0-9]匹配所有非数字字符
|
\b 匹配以英文字母,数字为边界的字符串
|
|
[^a-z]匹配所有非小写字母字符
|
\B 匹配不以英文字母,数值为边界的字符串
|
|
^ 匹配字符开头的字符
|
a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串
|
|
$ 匹配字符结尾的字符
|
abc 匹配含有 abc 的字符串
|
rename 批量修改文件名的更多相关文章
- rename 批量修改文件名简单用法
有的时候我们需要批量创建文件做测试,为了做区分,一般只要稍稍动动文件名即可,MV命令既可以移动文件,也是可以修改文件名的,但批量修改文件名MV做不到,此时,我们可以用rename命令批量修改是蛮不错的 ...
- rename批量修改文件名
批量改名: 如文件,批量修改,把hello去掉[root@localhost wang]# ll-rw-r--r-- 1 root root 0 5月 14 02:36 a.hello.txt-rw- ...
- Linux下批量修改文件名(rename)
原文地址: http://blog.csdn.net/sea_shore/article/details/6102437 1.rename命令批量修改文件名, 其实linux下可以使用别的办法来批量修 ...
- 初学shell,为了练习sed,写了个简单的批量修改文件名的脚本,后来执行时发现系统竟然自带有一个rename命令,顺便也记下了
1 #!/bin/bash 2 <<Comment 3 批量修改文件名的脚本 4 2015/10/24 5 webber 6 Comment 7 ARGS=2 ...
- 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 ...
- 用python批量修改文件名
从youtube上当下来百来首mv,每个都需要去掉视频,这还挺好弄得,格式工厂一弄就完了,但是文件名,都带有乱七八糟的*啥的巴拉巴拉的,咋修改啊,几百首总不可能一个一个rename吧 #批量修改文件名 ...
- 批量修改文件名后缀,例如:html修改成HTML
批量修改文件名后缀,例html修改成HTML 把文件后缀名html全部修改成HTML: 例:aa.html aa.HTML #!/bin/bash for file in `ls`;do mv $fi ...
- shell脚本:批量修改文件名
参考链接1:shell脚本:批量修改文件名(删除文件名中字符) 参考链接2:linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 ) 参考链接3:每天一个linux ...
随机推荐
- 高通 QC协议 谷歌 PD协议
高通 QC协议 谷歌 PD协议 上述协议是两款充电协议 现在已经应用于智能设备的充电中了 https://jingyan.baidu.com/article/7908e85cb04b1baf48 ...
- SpringMVC 环境搭建
SpringMVC 框架环境搭建操作步骤如下: 创建动态 Web 项目 配置 Tomcat 服务器 配置 SpringMVC 前端控制器 <?xml version="1.0" ...
- centos 7修改yum源
centos系统要定期更新,前天使用sudo yum update命令更新过程中出错,安装的是x64的系统,结果更新的内容有i686的依赖包,最终由于64与32位系统依赖的原因导致更新失败,更糟糕的是 ...
- linux 进程信号集合 sigset_t -(转自linengeir的专栏)
sigset_t 号集及信号集操作函数:信号集被定义为一种数据类型: typedef struct { unsigned long sig[_NSIG_WORDS]: } sigset_t 信号集用来 ...
- LTC3780 工作原理分析
流程分析 当 CV调节 调节顺时针调节CV的时候 接入电路部分的电阻变大 Vosense变小 LTC内部的误差放大器 输出的变大 LTC内部逻辑调节 增大电压 我估计最终电压还是大约800mv左右 可 ...
- Docker的镜像理解以及容器的备份、恢复和迁移操作
Docker的镜像理解以及容器的备份.恢复和迁移操作 这篇文章主要介绍了Docker的镜像理解以及容器的备份.恢复和迁移操作,覆盖很多原理知识以及容器的重要操作步骤,极力推荐!需要的朋友可以参考下 D ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...
- mysql数据库-备份方式简介与规范
目录 1 应对场景: 2. 备份方式分类 2.1 按备份数据类型划分 2.2 按侵入程度划分 2.3 按备份方式划分 3 备份注意要点 4 还原要点 4.1 定期还原测试,验证备份可用性 4.2 还原 ...
- 人体姿态和形状估计的视频推理:CVPR2020论文解析
人体姿态和形状估计的视频推理:CVPR2020论文解析 VIBE: Video Inference for Human Body Pose and Shape Estimation 论文链接:http ...
- NVIDIA TensorRT:可编程推理加速器
NVIDIA TensorRT:可编程推理加速器 一.概述 NVIDIA TensorRT是一个用于高性能深度学习推理的SDK.它包括一个深度学习推理优化器和运行时间,为深度学习推理应用程序提供低延迟 ...