【Linux】一步一步学Linux——rename命令(36)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項
- 04. 參考示例
- 05. 附錄
01. 命令概述
rename命令用字符串替換的方式批量改變文件名。
rename 用于 對文件進行命名管理,可進行批量命名并支持正則表達式, rename命令存在兩個版本用法上有所區別 一個是 C語言版本支持通配符,另一個是 Perl版本.支持正則表達式
02. 命令格式
rename [選項] 表達式 替換文件…
rename [options] expression replacement file…
expression 將文件名需要替換的字符串
replacement 將文件名中含有的原字符替換成目標字符串
file 指定要改變文件名的文件列表
03. 常用選項
-v, --verbose 解釋正在進行的操作-s, --symlink 在符號鏈接上執行-h, --help 顯示此幫助并退出-V, --version 輸出版本信息并退出【常用通配符說明】? 表示一個任意字符* 表示一個或一串任意字符 ------------------------------------------------- 【常用正則表達式符號說明】 ^ 匹配輸入的開始位置 $ 匹配輸入的結尾 . 匹配除換行符外的任意字符 + 匹配前一個字符一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z" [a-z] 表示某個范圍內的字符,例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字符。 [^m-z] 否定的字符區間。與不在指定區間內的字符匹配。04. 參考示例
rename支持通配符
? 可替代單個字符 * 可替代多個字符 [charset] 可替代charset集中的任意單個字符4.1 將當前目錄下所有.txt文件中的.txt替換成.doc
[deng@localhost test]$ ls 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt [deng@localhost test]$ rename .txt .doc *.txt [deng@localhost test]$ ls 10.doc 1.doc 2.doc 3.doc 4.doc 5.doc 6.doc 7.doc 8.doc 9.doc [deng@localhost test]$4.2 將main1.c重命名為main.c
[deng@localhost test]$ touch main1.c [deng@localhost test]$ rename main1.c main.c main1.c [deng@localhost test]$ ls main.c [deng@localhost test]$4.3 將foo?所有出現foo的部分替換成foo0
如果使用rename foo foo0 foo?,會把foo1到foo9的文件重命名為foo01到foo09,重命名的文件只是有4個字符長度名稱的文件,文件名中的foo被替換為foo0。
[deng@localhost test]$ ls foo? foo1 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 [deng@localhost test]$ rename foo foo0 foo? [deng@localhost test]$ ls foo0? foo01 foo02 foo03 foo04 foo05 foo06 foo07 foo08 foo09 [deng@localhost test]$4.4 rename foo foo0 foo??
如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名為foo001到foo099,只重命名5個字符長度名稱的文件,文件名中的foo被替換為foo0。
[deng@localhost test]$ ls foo?? foo01 foo10 foo19 foo28 foo37 foo46 foo55 foo64 foo73 foo82 foo91 foo02 foo11 foo20 foo29 foo38 foo47 foo56 foo65 foo74 foo83 foo92 foo03 foo12 foo21 foo30 foo39 foo48 foo57 foo66 foo75 foo84 foo93 foo04 foo13 foo22 foo31 foo40 foo49 foo58 foo67 foo76 foo85 foo94 foo05 foo14 foo23 foo32 foo41 foo50 foo59 foo68 foo77 foo86 foo95 foo06 foo15 foo24 foo33 foo42 foo51 foo60 foo69 foo78 foo87 foo96 foo07 foo16 foo25 foo34 foo43 foo52 foo61 foo70 foo79 foo88 foo97 foo08 foo17 foo26 foo35 foo44 foo53 foo62 foo71 foo80 foo89 foo98 foo09 foo18 foo27 foo36 foo45 foo54 foo63 foo72 foo81 foo90 foo99 [deng@localhost test]$ rename foo foo0 foo?? [deng@localhost test]$ ls foo0?? foo001 foo012 foo023 foo034 foo045 foo056 foo067 foo078 foo089 foo002 foo013 foo024 foo035 foo046 foo057 foo068 foo079 foo090 foo003 foo014 foo025 foo036 foo047 foo058 foo069 foo080 foo091 foo004 foo015 foo026 foo037 foo048 foo059 foo070 foo081 foo092 foo005 foo016 foo027 foo038 foo049 foo060 foo071 foo082 foo093 foo006 foo017 foo028 foo039 foo050 foo061 foo072 foo083 foo094 foo007 foo018 foo029 foo040 foo051 foo062 foo073 foo084 foo095 foo008 foo019 foo030 foo041 foo052 foo063 foo074 foo085 foo096 foo009 foo020 foo031 foo042 foo053 foo064 foo075 foo086 foo097 foo010 foo021 foo032 foo043 foo054 foo065 foo076 foo087 foo098 foo011 foo022 foo033 foo044 foo055 foo066 foo077 foo088 foo099 [deng@localhost test]$4.5 rename foo foo0 foo*
如果使用rename foo foo0 foo*,foo001到foo100的所有文件都被重命名為foo0001到foo0100,所有以foo開頭的文件都被重命名。
[deng@localhost test]$ rename foo foo0 foo* [deng@localhost test]$ ls foo0001 foo0014 foo0027 foo0040 foo0053 foo0066 foo0079 foo0092 foo0002 foo0015 foo0028 foo0041 foo0054 foo0067 foo0080 foo0093 foo0003 foo0016 foo0029 foo0042 foo0055 foo0068 foo0081 foo0094 foo0004 foo0017 foo0030 foo0043 foo0056 foo0069 foo0082 foo0095 foo0005 foo0018 foo0031 foo0044 foo0057 foo0070 foo0083 foo0096 foo0006 foo0019 foo0032 foo0045 foo0058 foo0071 foo0084 foo0097 foo0007 foo0020 foo0033 foo0046 foo0059 foo0072 foo0085 foo0098 foo0008 foo0021 foo0034 foo0047 foo0060 foo0073 foo0086 foo0099 foo0009 foo0022 foo0035 foo0048 foo0061 foo0074 foo0087 foo0100 foo0010 foo0023 foo0036 foo0049 foo0062 foo0075 foo0088 main.c foo0011 foo0024 foo0037 foo0050 foo0063 foo0076 foo0089 foo0012 foo0025 foo0038 foo0051 foo0064 foo0077 foo0090 foo0013 foo0026 foo0039 foo0052 foo0065 foo0078 foo0091 [deng@localhost test]$4.6 rename foo foo0 foo[1-9]*
如果使用rename foo foo0 foo[1-9]*,從foo1到foo9的所有文件都被重命名為foo01到foo09,文件名中的foo被替換為foo0。
[deng@localhost test]$ ls foo1 foo10 foo2 foo3 foo4 foo5 foo6 foo7 foo8 foo9 [deng@localhost test]$ rename foo foo0 foo[1-9]* [deng@localhost test]$ ls foo01 foo010 foo02 foo03 foo04 foo05 foo06 foo07 foo08 foo09 [deng@localhost test]$rename支持正則表達式
4.7 字母的替換
rename "s/AA/aa/" * //把文件名中的AA替換成aa4.8 修改文件的后綴
rename "s//.html//.php/" * //把.html 后綴的改成 .php后綴4.9 批量添加文件后綴
rename "s/$//.txt/" * //把所有的文件名都以txt結尾4.10 批量刪除文件名
rename "s//.txt//" * //把所有以.txt結尾的文件名的.txt刪掉05. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
參考 Perl版本:https://www.cnblogs.com/amosli/p/3491649.html
總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——rename命令(36)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——d
- 下一篇: 【Linux】一步一步学Linux——f