linux修改文件名的指令有兩個:1、mv指令,既可以重命名文件,又可以移動文件或資料夾,修改語法「mv [參數] 舊檔名新文件名」; 2.rename指令,可用字串取代的方式批次改變檔名,語法「rename [參數] 舊檔名新檔名」。
本教學操作環境:CentOS 6系統、Dell G3電腦。
在Linux下重新命名檔案或目錄,可以使用mv指令或rename指令,這裡分享下二者的使用方法。
1、使用mv指令
mv指令既可以重新命名,又可以移動檔案或資料夾。
mv [参数] 旧文件/目录 新文件名/目录
範例:將目錄A重新命名為B
mv A B
範例:將/a目錄移到/b下,並重新命名為c
mv /a /b/c
其實在文字模式中要重新命名檔案或目錄,只需要使用mv指令就可以了,比如說要將一個名為abc的檔案重新命名為1234:
mv abc 1234
注意,如果目前目錄下也有個1234的檔案的話,這個文件是會將它覆蓋的。
如何使用mv指令重命名多個檔案?
mv指令一次只能重命名一個文件,但它可以與其他指令一起使用,例如find在bash for或while循環來重命名多個文件。
範例:如何透過使用bash for循環來重命名目前目錄中的所有.html文件,將.html副檔名變更為.php。
for f in *.html; do mv -- "$f" "${f%.html}.php" done
讓我們逐行分析程式碼:
● 第一行建立一個for迴圈並遍歷一個包含所有檔案的清單.html。
● 第二行適用於清單中的每個項目和檔案移動到一個新的替換.html用.php。該部分${file%.html}使用shell參數擴充功能.html從檔案名稱中刪除部分。
● done表示循環段的結束。
我們也可以mv結合使用該指令find來實現與上面相同的功能。
find . -depth -name "*.html" -exec sh -c 'f="{}"; mv -- "$f" "${f%.html}.php"' \;
find指令使用該開關將所有.html以目前目錄結尾的檔案mv一個接一個地傳遞給指令-exec。該字串{}是目前正在處理的檔案的名稱。
上面的範例中可以看出,使用該mv指令重命名多個檔案並不是一件容易的事,因為它需要很好地了解Bash腳本。
2、使用rename指令
rename指令用字串取代的方式批次改變檔名。
重新命名單一檔案
# 将main1.c重命名为main.c rename main1.c main.c main1.c
#rename支援通配符
? 可替代单个字符 * 可替代多个字符 [charset] 可替代charset集中的任意单个字符
資料夾中有這些檔案foo1, …, foo9, foo10, …, foo278
如果使用rename foo foo0 foo?
,會把foo1到foo9的檔案重新命名為foo01到foo09,重新命名的文件只是有4個字元長度名稱的文件,檔案名稱中的foo被替換為foo0。
如果使用rename foo foo0 foo??
,foo01到foo99的所有檔案都被重新命名為foo001到foo099,只重命名5個字元長度名稱的文件,檔案名稱中的foo被替換為foo0。
如果使用rename foo foo0 foo*
,foo001到foo278的所有檔案都被重新命名為foo0001到foo0278,所有以foo開頭的檔案都被重新命名。
如果使用rename foo0 foo foo0[2]*
,從foo0200到foo0278的所有檔案都被重新命名為foo200到foo278,檔案名稱中的foo0被替換為foo。
rename支援正規表示式
# 把文件名中的AA替换成aa rename "s/AA/aa/" * # 把.html 后缀的改成 .php后缀 rename "s//.html//.php/" * # 把所有的文件名都以txt结尾 rename "s/$//.txt/" * # 把所有以.txt结尾的文件名的.txt删掉 rename "s//.txt//" *
預設情況下,重新命名指令不會覆寫現有檔案;但傳遞-f參數就可以允許覆蓋現有文件。
rename -f 's/.html/.php/' *.html
常見的使用rename指令範例
#用底線取代檔案名稱中的空格
rename 'y/ /_/' *
將檔案名稱轉換為小寫
rename 'y/A-Z/a-z/' *
將檔案名稱轉換為大寫
rename 'y/a-z/A-Z/' *
相關推薦:《Linux影片教學》
以上是linux修改檔名指令是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!