掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流
用單個(gè)命令重命名一組文件,請(qǐng)使用 rename 命令。它需要使用正則表達(dá)式,并且可以在開(kāi)始前告訴你會(huì)有什么更改。

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、網(wǎng)頁(yè)空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、北鎮(zhèn)網(wǎng)站維護(hù)、網(wǎng)站推廣。
幾十年來(lái),Linux 用戶(hù)一直使用 mv 命令重命名文件。它很簡(jiǎn)單,并且能做到你要做的。但有時(shí)你需要重命名一大組文件。在這種情況下,rename 命令可以使這個(gè)任務(wù)更容易。它只需要一些正則表達(dá)式的技巧。
與 mv 命令不同,rename 不允許你簡(jiǎn)單地指定舊名稱(chēng)和新名稱(chēng)。相反,它使用類(lèi)似于 Perl 中的正則表達(dá)式。在下面的例子中,s 指定我們將第一個(gè)字符串替換為第二個(gè)字符串(舊的),從而將 this.new 變?yōu)?this.old。
$ rename 's/new/old/' this.new
$ ls this*
this.old
使用 mv this.new this.old 可以更容易地進(jìn)行更改一個(gè),但是將字符串 this 變成通配符 *,你可以用一條命令將所有的 *.new 文件重命名為 *.old:
$ ls *.new
report.new schedule.new stats.new this.new
$ rename 's/new/old/' *.new
$ ls *.old
report.old schedule.old stats.old this.old
正如你所料,rename 命令不限于更改文件擴(kuò)展名。如果你需要將名為 report.* 的文件更改為 review.*,那么可以使用以下命令做到:
$ rename 's/report/review/' *
正則表達(dá)式中的字符串可以更改文件名的任何部分,無(wú)論是文件名還是擴(kuò)展名。
$ rename 's/123/124/' *
$ ls *124*
status.124 report124.txt
如果你在 rename 命令中添加 -v 選項(xiàng),那么該命令將提供一些反饋,以便你可以看到所做的更改,或許會(huì)包含你沒(méi)注意的。這讓你注意到并按需還原更改。
$ rename -v 's/123/124/' *
status.123 renamed as status.124
report123.txt renamed as report124.txt
另一方面,使用 -n(或 –nono)選項(xiàng)會(huì)使 rename 命令告訴你將要做的但不會(huì)實(shí)際做的更改。這可以讓你免于執(zhí)行不不想要的操作,然后再還原更改。
$ rename -n 's/old/save/' *
rename(logger.man-old, logger.man-save)
rename(lyrics.txt-old, lyrics.txt-save)
rename(olderfile-, saveerfile-)
rename(oldfile, savefile)
rename(review.old, review.save)
rename(schedule.old, schedule.save)
rename(stats.old, stats.save)
rename(this.old, this.save)
如果你對(duì)這些更改滿(mǎn)意,那么就可以運(yùn)行不帶 -n 選項(xiàng)的命令來(lái)更改文件名。
但請(qǐng)注意,正則表達(dá)式中的 . 不會(huì)被視為句點(diǎn),而是作為匹配任何字符的通配符。上面和下面的示例中的一些更改可能不是輸入命令的人希望的。
$ rename -n 's/.old/.save/' *
rename(logger.man-old, logger.man.save)
rename(lyrics.txt-old, lyrics.txt.save)
rename(review.old, review.save)
rename(schedule.old, schedule.save)
rename(stats.old, stats.save)
rename(this.old, this.save)
為確保句點(diǎn)按照字面意思執(zhí)行,請(qǐng)?jiān)谒那懊婕右粋€(gè)反斜杠。這將使其不被解釋為通配符并匹配任何字符。請(qǐng)注意,進(jìn)行此更改時(shí),僅選擇了 .old 文件。
$ rename -n 's/\.old/.save/' *
rename(review.old, review.save)
rename(schedule.old, schedule.save)
rename(stats.old, stats.save)
rename(this.old, this.save)
下面的命令會(huì)將文件名中的所有大寫(xiě)字母更改為小寫(xiě),除了使用 -n 選項(xiàng)來(lái)確保我們?cè)诿顖?zhí)行之前檢查將做的修改。注意在正則表達(dá)式中使用了 y,這是改變大小寫(xiě)所必需的。
$ rename -n 'y/A-Z/a-z/' W*
rename(WARNING_SIGN.pdf, warning_sign.pdf)
rename(Will_Gardner_buttons.pdf, will_gardner_buttons.pdf)
rename(Wingding_Invites.pdf, wingding_invites.pdf)
rename(WOW-buttons.pdf, wow-buttons.pdf)
在上面的例子中,我們將所有大寫(xiě)字母更改為了小寫(xiě),但這僅對(duì)以大寫(xiě)字母 W 開(kāi)頭的文件名。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢(xún)/運(yùn)營(yíng)咨詢(xún)/技術(shù)建議/互聯(lián)網(wǎng)交流