参考 Linux批量修改文件名前缀rename命令
$ rename -h
抄写他的一段文字
Substitution替换
s / expr1 / expr2 / [gi]
/为分界符,可以使用其他任意字符为分界符
expr1,expr2都支持正则
expr1会被查找替换为expr2。
ig两个字母分别为正则的匹配模式:忽略大小写和全局匹配,否则默认换行为分界符。方括号[]包裹表示他们可不填。
Translation字符转译
类似于替换s,它可用于将一个字符串转换为另一个字符串,即字符转换。表达式如:y/charset1/charset2/
如:
转换为小写:rename 'y/A-Z/a-z/' *
添加txt后缀:rename 's/$/\.txt/' *
-
准备文件
$ touch test{1..9}.txt $ ls test1.txt test2.txt test3.txt test4.txt test5.txt test6.txt test7.txt test8.txt test9.txt
-
去掉.txt 后缀
也就是: .txt 后缀替换成空$ rename 's/\.txt$//' * 解释 : 被替换部分:.txt$ ( 以 .txt 结尾) 替换后部分: 空 (替换为 空 ) $ ls test1 test2 test3 test4 test5 test6 test7 test8 test9
-
加上 .zip 后缀
$ rename 's/$/\.zip/' * 解释 : 被替换部分:$ ( 所有结尾字符) 替换后部分: \.zip (替换为 .zip ) $ ls test1.zip test2.zip test3.zip test4.zip test5.zip test6.zip test7.zip test8.zip test9.zip
-
.zip 后缀替换为.txt 后缀
$ rename 's/\.zip$/.txt/' * 解释 : 被替换部分:\.zip$( 以.zip$结尾) 替换后部分: .txt (替换为 .txt) $ ls test1.txt test2.txt test3.txt test4.txt test5.txt test6.txt test7.txt test8.txt test9.txt
-
去掉特定字符结尾 ( 后缀没有 . )文章来源:https://www.toymoban.com/news/detail-739873.html
1). 先去掉后缀 $ rename 's/\.txt$//' * 2). 然后假设操作错误,还连续 2 次错误,结果文件名后面就都带着2个zip了 $ rename 's/$/zip/' * 解释 : 被替换部分:$( 所有结尾字符) 替换后部分: zip (替换为 zip ,忘了加 \.) $ rename 's/$/zip/' * $ ls test1zipzip test2zipzip test3zipzip test4zipzip test5zipzip test6zipzip test7zipzip test8zipzip test9zipzip 3). 去掉一个 zip $ rename 's/zip$//' * 解释 : 被替换部分: zip$ ( 以 zip 结尾) 替换后部分: 空 $ ls test1zip test2zip test3zip test4zip test5zip test6zip test7zip test8zip test9zip 4). 重复一次,即可去掉另一个zip 当然也可以一次就去掉 2 个 zip,那个正则表达式就复杂一些
-
替换或去掉开头或中间部分字符串文章来源地址https://www.toymoban.com/news/detail-739873.html
$ ls test1 test2 test3 test4 test5 test6 test7 test8 test9 1). 开头 test 替换为 good $ rename 's/^test/good/' * 解释 : 被替换部分:^test( 以test开头) 替换后部分: good(替换为 good ) $ ls good1 good2 good3 good4 good5 good6 good7 good8 good9 2). 开头 good 替换为 testandtest ,为了下面替换中间字符 $ rename 's/^good/testandtest/' * 解释 : 被替换部分:^good( 以good开头) 替换后部分: testandtest(替换为 testandtest ) $ ls testandtest1 testandtest3 testandtest5 testandtest7 testandtest9 testandtest2 testandtest4 testandtest6 testandtest8 3). 替换其中的 and 为 & $ rename 's/and/\&/' * 解释 : 被替换部分:and( 文件名中的 and) 替换后部分: &(替换为 & ) $ ls 'test&test1' 'test&test3' 'test&test5' 'test&test7' 'test&test9' 'test&test2' 'test&test4' 'test&test6' 'test&test8' 4). 文件名都带引号了,因为 & 是个特殊字符 ? 给他换成下划线 _ $ rename 's/&/_/' * 解释 : 被替换部分:&( 文件名中的 &) 替换后部分: _(替换为 _ ) $ ls test_test1 test_test3 test_test5 test_test7 test_test9 test_test2 test_test4 test_test6 test_test8 5) 只替换开头的 test $ rename 's/^test/good/' * 解释 : 被替换部分:^test( 以test开头) 替换后部分: good(替换为 good ) $ ls good_test1 good_test3 good_test5 good_test7 good_test9 good_test2 good_test4 good_test6 good_test8
到了这里,关于linux 使用 rename 给文件名批量加后缀、换后缀和去掉后缀的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!