rename命令和批量重命名
早期版本的rename是C语言版本,如今新的Ubuntu中采用的都是perl版本,功能更加强大
Usage:rename [-v] [-n] [-f] perlexpr [filenames]-v(verbose)打印被成功重命名的文件
-n(no-act)只显示将被重命名的文件,而非实际进行重命名操作
-f(force)覆盖已经存在的文件
perlexprPerl语言格式的正则表达式
files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读
常用的参数是-n
,可以先用-n参数对一部小部分图片进行测试,每次执行命令会在terminal中把效果列出来,等确保没问题后去掉-n
参数,再对全部数据进行统一处理。
此次应用是为了批量重命名一批图片文件(自己的图片数据,作为caffe训练和测试数据使用)
本来全部都是这种格式:
(1).jpg
(2).jpg
…..
要改为:
test_001.jpg
test_002.jpg
……
用了比较笨的办法:先把括号去掉,再统一改格式(假定图片文件存放在terminal打开的当前目录位置)
1、去掉括号
rename -n 's/[()]//g' *.jpg解释:
-n直接打印结果在终端中而非实际执行
引号中是perl的正则表达式,用来匹配和替换,s代表substitution,替换的意思
[()]代表匹配[]中的内容
//两个斜杠之间是空代表替换为空的内容,相当于删除
g代表全部匹配,不加g的话默认只会匹配一个括号
2、继续重命名为想要的格式
rename -n 's/^/test_/' *.jpg解释:
s-替换
^-在文件名称开头加字符
test_-将名称前面添加上test_
更详细的rename命令参考:Ubuntu用rename命令批量重命名文件
偶尔会遇到需要重命名批量文件,最典型的例子就是数码相机的相片,在Ubuntu可以用工具Purrr或者PerfixSuffix实现该功能,但重命名批量文件并不常用,为了偶尔的一次操作,安装工具(可能通过Ubuntu Software Center或者sudo apt-get install安装),加之图形化界面操作也比较费时间。事实上,rename命令就可以出色完成该工作。
- RENAME(1) Perl Programmers Reference Guide RENAME(1)
- rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
-v(verbose)打印被成功重命名的文件-n(no-act)只是显示将被重命名的文件,而不重命名(重命名之前可以用-n确认需要重命名的文件)-f(force)覆盖已经存在的文件perlexprPerl语言格式的正则表达式files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读
- rename -n 's/Sam3/Stm32/' *.nc /*确认需要重命名的文件*/
- rename -v 's/Sam3/Stm32/' *.nc /*执行修改,并列出已重命名的文件*/
匹配:m// (可以省略m,直接写成/regexp/)替换:s///转化:tr///
- s/PATTERN/REPLACEMENT/egimosx
e Evaluate the right side as an expression.g Match globally, i.e. all occurrences.i Case-insensitive pattern matching.m Treat string as multiple lines.o Only compile pattern once, even if variables within it change.s Treat string as single line.x Use extended regular expressions
- tr/SEARCHLIST/REPLACEMENTLIST/cds
- y/SEARCHLIST/REPLACEMENTLIST/cds
c Complement the SEARCHLIST.d Delete found but unreplaced characters.s Squash duplicate replaced characters.
- jelline@jelline:~$ rename -n 'tr/Sam3/Stm/' FastSpiSam3C.nc /*替换字符短,用最后一个字符m替换3*/
- FastSpiSam3C.nc renamed as FtstSpiStmmC.nc
- jelline@jelline:~$ rename -n 'tr/Sam3/Stm32/' FastSpiSam3C.nc /*替换字符长,多出字符被忽略*/
- FastSpiSam3C.nc renamed as FtstSpiStm3C.nc
参数c、d、s把我搞懵了,本想通过一系列操作,总结规律,结果徒劳。
x? 匹配 0 次或一次 x 字符串x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数.* 匹配 0 次或一次的任何字符.+ 匹配 1 次或多次的任何字符{m} 匹配刚好是 m 个 的指定字符串{m,n}匹配在 m个 以上 n个 以下 的指定字符串{m,} 匹配 m个 以上 的指定字符串[] 匹配符合 [] 内的字符[^] 匹配不符合 [] 内的字符[0-9]匹配所有数字字符[a-z]匹配所有小写字母字符[^0-9]匹配所有非数字字符[^a-z]匹配所有非小写字母字符^ 匹配字符开头的字符$ 匹配字符结尾的字符\d 匹配一个数字的字符,和 [0-9] 语法一样\d+ 匹配多个数字字符串,和 [0-9]+ 语法一样\D 非数字,其他同 \d\D+ 非数字,其他同 \d+\w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样\w+ 和 [a-zA-Z0-9]+ 语法一样\W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样\W+ 和 [^a-zA-Z0-9]+ 语法一样\s 空格,和 [\n\t\r\f] 语法一样\s+ 和 [\n\t\r\f]+ 一样\S 非空格,和 [^\n\t\r\f] 语法一样\S+ 和 [^\n\t\r\f]+ 语法一样\b 匹配以英文字母,数字为边界的字符串\B 匹配不以英文字母,数值为边界的字符串a|b|c 匹配符合a字符 或是b字符 或是c字符 的字符串abc 匹配含有 abc 的字符串
- rename -v 's/Sam3/Stm32/' *.nc /*执行修改,并列出已重命名的文件*/
- rename 's/\.bak$//' *.bak
- rename 'y/A-Z/a-z/' *
- rename 's/[ ]+//g' *
- rename 's/^/jelline/' *
- rename 's/$/jelline/' *
rename命令和批量重命名相关推荐
- Windows下的通过命令行批量重命名文件
今天在工作时遇到了一个情况,通过高速扫描仪扫描的文件是以图片的形式保存到本地硬盘上的,但是扫描仪给图片命的名就很混乱,并不是我想要的.作为一个强迫症,于是就想到了手动把这些名字改过来.但是这一整个文件 ...
- windows下使用cmd命令文件批量重命名批量修改后缀重命名快捷键
windows下重命名快捷键 按下F2重命名当前选中文件,输入完新的文件名之后不要回车保存,直接按下Tab键就会进入下一个文件的重命名. windows 下批量修改文件后缀 使用ren或者rename ...
- ubuntu 命令行批量重命名文件夹
ubuntu 命令行批量rename文件夹 文件夹的命名有错(e.g., 1234./)由于有这个点(.)导致这些文件夹不能移动,因此想批量改文件夹名字.觉得理论上一行命令行是可以解决的,但搜索后发现 ...
- linux 中文件批量重命名
mv 命令与批量重命名 linux 中文件重命名一般使用 mv 命令来完成.此命令以单个文件为参数将旧文件重命名为一个新的文件.如果要实现批量化重命名操作,用户需要自行编写程序. 实现批量重命名 最简 ...
- linux重命名的命令行操作,Linux rename命令批量重命名的方法
Linux的 rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C语言版本的了,由于历史原因,在Perl语言 ...
- linux 使用rename命令批量重命名文件
linux 使用rename命令批量重命名文件 命令格式: Usage: rename [-v] [-n] [-f] perlexpr [filenames] 参数说明: v 显示文件重命名的细节 n ...
- Linux下批量重命名文件或文件夹(rename命令)
cp mv 在复制.移动文件时,可单个更改文件名称 下面介绍Linux系统中另一个重命名命令 rename命令的用法. 批量创建那些规格差不多的文件名.[测试的第一步] [root@linuxidc ...
- Linux rename命令 批量重命名
Linux rename命令 批量重命名 Linux的 rename 命令有两个版本,一个是C语言版本的,一个是Perl语言版本的,早期的Linux发行版基本上使用的是C语言版本的,现在已经很难见到C ...
- buntu用rename命令批量重命名文件
出处:Jelline Bloghttp://blog.chinaunix.net/uid-9112803-id-2377271.html 一.rename命令 摘要: 本文介绍rename命令完成重命 ...
最新文章
- 深入微服务 API 网关之架构实践篇
- python flask web开发_Python Flask web后端开发
- Hadoop系列五:Hadoop之Zookeeper篇
- 罗辑思维年终4小时演讲《时间的朋友》1000字浓缩版
- 链表的基本操作 java_详细实现单链表的基本操作【Java版】
- java字节输入与字符输入_Java中的字节输入出流和字符输入输出流
- vc/vs开发的应用程序添加dump崩溃日志转
- 栈与队列在SGI STL的底层实现
- android评论嵌套,android 嵌套的listview示例(可参照实现朋友圈评论)
- sails mysql_sails项目创建与常用基础操作总结
- [Java] 蓝桥杯ALGO-148 算法训练 5-1最小公倍数
- Mybatis 优化:
- 2021南航计算机专硕上岸经验贴
- 模糊PID控制器设计
- Unity 2d - 基础 - 碰撞(一) - 针对性碰撞
- CSS类选择器常用命名
- Linux权限“suid”与“guid”设置
- 服务注册Service Registration
- mysqldump导出表结构
- 1 MySQL8绿色版
热门文章
- Android 9.0 禁用屏幕锁屏和修改默认输入法为谷歌输入法功能实现
- 【图片新闻】西科斯基公司将建造美国总统的新型海军一号直升机VH-92A
- 真二次元!动漫形象风格迁移
- ClickHouse编程指南之DatabaseEngine和TableEngine
- CString、TCHAR*、char*转换
- Linux,邮件服务器配置
- java模拟器1.5.3_给力助手下载-bluestacks给力助手下载1.5.3 官网最新版-东坡下载
- 学生注册平台html,安全教育平台登录注册
- 【latex】论文或参考文献中出现俄文\西班牙文人名的解决方法
- php文件上传代码功能实现代码