
linux 批量重名名
Linux Shell 批量重命名的方法总览
1、删除所有的 .bak 后缀:
2、把 .jpe 文件后缀修改为 .jpg:
3、把所有文件的文件名改为小写:
4、将 abcd.jpg 重命名为 abcd_efg.jpg:
5、将 abcd_efg.jpg 重命名为 abcd_lmn.jpg:
6、把文件名中所有小写字母改为大写字母:
7、把格式 *_?.jpg 的文件改为 *_0?.jpg:
8、把文件名的前三个字母变为 vzomik:
9、把文件名的后四个字母变为 vzomik:
rename相关命令:mv
rename 用于 对文件进行命名管理,可进行批量命名并支持正则表达式, rename命令存在两个版本用法上有所区别 一个是 C语言版本支持通配符,另一个是 Perl版本.支持正则表达式
参数
-n *** 作预览,在不更改文件名称情况下,显示执行后的结果
-f强制执行
【常用通配符说明】
?表示一个任意字符
*表示一个或一串任意字符
-------------------------------------------------
【常用正则表达式符号说明】
^匹配输入的开始位置
$匹配输入的结尾
.匹配除换行符外的任意字符
+匹配前一个字符一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z"
[a-z]表示某个范围内的字符,例如,"[a-z]"匹配"a"与"z"之间的任何一个小写字母字符。
[^m-z]否定的字符区间。与不在指定区间内的字符匹配。
最后更新 2013-05-17 10:41:4
[root@localhost www]# rename 's/$/\.^abc/' /home/www/def #给www目录下的abc 更改为def 仅共参考。
这两天在使用Ubuntu系统上进行开发软件的安装,一直遇到创建的Android Studio图标无法使用的问题,创建的图标提示「应用程序启动错误」。在网上也找了很多文章,都是说文件夹中包含空格。但是文件路径确实没包含空格,但是包含-,即"android-studio",所以准备重命名进行尝试,但是遇到"bareword not allowed"的问题。Linux下对文件重命名有两种命令: mv ,rename
mv很简单,move文件移动
mv /dir/file1 /dir2/file1
两个参数,第一个是源文件,第二个是目的地,如果第二个参数文件名不一样,则会重命名。
当两个参数不带目录,只有文件名时,那就是重命名了。这是单个文件的重命名。
rename arg1 arg2 arg3
rename才是真正的批量重命名命令。而且他是3个参数,不是2个。
arg1:旧的字符串
arg2:新的字符串
arg3:匹配要重命名的文件,可以使用3种通配符,*、?、[char],*表示任意多个字符,?表示单个字符,[char]匹配char单个自定的精确字符,可以填写任意字符,foo[a]*表示只匹配fooa开头的文件名,如果一个文件是foobcc.txt,是不会被匹配的。
值的注意的是,此命令在不同的Linux版本也有不同,Debian一系的 *** 作系统别有用法。举例说明:
比如/home下有两个文件 abbcc.txt, addbb.txt , a.txt
我想把a替换为xxx,命令是这样的 : rename “a” “xxx” *.txt
那么它会首先去匹配有哪些文件需要修改,这里凡是.txt后缀的文件都会被匹配,如果改成?.txt则只会匹配到一个文件,那就是a.txt。然后把匹配到的文件中的a字符替换为xxx,注意测试时abab.txt这样的,只会替换第一个a,有待再了解。
说到Debian一系的 *** 作系统,比如Ubuntu,这个命令这样使用是不对的,报错,向下面这样的:
Bareword “a” not allowed while “strict subs” in use at (eval 1) line 1.
经过Google之后发现有这样的说法:
On Debian-based distros it takes a perl expression and a list of files. you need to would need to use:
rename ‘s/foo/foox/’ *
这里是一个perl表达式,好理解点说就是综合了前两个参数为1个,这样就只需要2个参数,而非上面所说的3个参数形式。
所以在Ubuntu下执行上面举例的重命名时,命令是这样的:rename ‘s/a/xxx/’ *.txt
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)