linux修改文件名的命令有兩個(gè):1、mv命令,既可以重命名文件,又可以移動(dòng)文件或文件夾,修改語法“mv [參數(shù)] 舊文件名 新文件名”;2、rename命令,可用字符串替換的方式批量改變文件名,語法“rename [參數(shù)] 舊文件名 新文件名”。
本教程操作環(huán)境:CentOS 6系統(tǒng)、Dell G3電腦。
在Linux下重命名文件或目錄,可以使用mv命令或rename命令,這里分享下二者的使用方法。
1、使用mv命令
mv命令既可以重命名,又可以移動(dòng)文件或文件夾。
mv?[參數(shù)]?舊文件/目錄?新文件名/目錄
例子:將目錄A重命名為B
mv?A?B
例子:將/a目錄移動(dòng)到/b下,并重命名為c
mv?/a?/b/c
其實(shí)在文本模式中要重命名文件或目錄,只需要使用mv命令就可以了,比如說要將一個(gè)名為abc的文件重命名為1234:
mv?abc?1234
注意,如果當(dāng)前目錄下也有個(gè)1234的文件的話,這個(gè)文件是會(huì)將它覆蓋的。
如何使用mv命令重命名多個(gè)文件?
mv命令一次只能重命名一個(gè)文件,但它可以與其他命令一起使用,例如find在bash for或while循環(huán)來重命名多個(gè)文件。
示例:如何通過使用bash for循環(huán)來重命名當(dāng)前目錄中的所有.html文件,將.html擴(kuò)展名更改為.php。
for?f?in?*.html;?do? ????mv?--?"$f"?"${f%.html}.php" done
讓我們逐行分析代碼:
?● 第一行創(chuàng)建一個(gè)for循環(huán)并遍歷一個(gè)包含所有文件的列表.html。
?● 第二行適用于列表中的每個(gè)項(xiàng)目和文件移動(dòng)到一個(gè)新的替換.html用.php。該部分${file%.html}使用shell參數(shù)擴(kuò)展.html從文件名中刪除部分。
?● done表示循環(huán)段的結(jié)束。
我們也可以mv結(jié)合使用該命令find來實(shí)現(xiàn)與上面相同的功能。
find?.?-depth?-name?"*.html"?-exec?sh?-c?'f="{}";?mv?--?"$f"?"${f%.html}.php"'?;
find命令使用該開關(guān)將所有.html以當(dāng)前目錄結(jié)尾的文件mv一個(gè)接一個(gè)地傳遞給命令-exec。該字符串{}是當(dāng)前正在處理的文件的名稱。
上面的示例中可以看出,使用該mv命令重命名多個(gè)文件并不是一件容易的事,因?yàn)樗枰芎玫亓私釨ash腳本。
2、使用rename命令
rename命令用字符串替換的方式批量改變文件名。
-
重命名單個(gè)文件
#?將main1.c重命名為main.c rename?main1.c?main.c?main1.c
-
rename支持通配符
???可替代單個(gè)字符 *??可替代多個(gè)字符 [charset]??可替代charset集中的任意單個(gè)字符
文件夾中有這些文件foo1, …, foo9, foo10, …, foo278
如果使用rename foo foo0 foo?,會(huì)把foo1到foo9的文件重命名為foo01到foo09,重命名的文件只是有4個(gè)字符長度名稱的文件,文件名中的foo被替換為foo0。
如果使用rename foo foo0 foo??,foo01到foo99的所有文件都被重命名為foo001到foo099,只重命名5個(gè)字符長度名稱的文件,文件名中的foo被替換為foo0。
如果使用rename foo foo0 foo*,foo001到foo278的所有文件都被重命名為foo0001到foo0278,所有以foo開頭的文件都被重命名。
如果使用rename foo0 foo foo0[2]*,從foo0200到foo0278的所有文件都被重命名為foo200到foo278,文件名中的foo0被替換為foo。
-
rename支持正則表達(dá)式
#?把文件名中的AA替換成aa rename?"s/AA/aa/"?*? #?把.html?后綴的改成?.php后綴 rename?"s//.html//.php/"?*? #?把所有的文件名都以txt結(jié)尾 rename?"s/$//.txt/"?* #?把所有以.txt結(jié)尾的文件名的.txt刪掉 rename?"s//.txt//"?*
默認(rèn)情況下,重命名命令不會(huì)覆蓋現(xiàn)有文件;但傳遞-f參數(shù)就可以允許覆蓋現(xiàn)有文件。
rename?-f?'s/.html/.php/'?*.html
常見的使用rename命令示例
用下劃線替換文件名中的空格
rename?'y/?/_/'?*
將文件名轉(zhuǎn)換為小寫
rename?'y/A-Z/a-z/'?*
將文件名轉(zhuǎn)換為大寫
rename?'y/a-z/A-Z/'?*
相關(guān)推薦:《Linux視頻教程》