linux修改文件名命令是什么

linux修改文件名的命令有兩個(gè):1、mv命令,既可以重命名文件,又可以移動(dòng)文件或文件夾,修改語法“mv [參數(shù)] 舊文件名 新文件名”;2、rename命令,可用字符串替換的方式批量改變文件名,語法“rename [參數(shù)] 舊文件名 新文件名”。

linux修改文件名命令是什么

本教程操作環(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視頻教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊6 分享