如何在 Linux 上重新命名一組檔案
要用單個命令重新命名一組檔案,請使用 rename 命令。它需要使用正規表示式,並且可以在開始前告訴你會有什麼更改。
幾十年來,Linux 使用者一直使用 mv
命令重新命名檔案。它很簡單,並且能做到你要做的。但有時你需要重新命名一大組檔案。在這種情況下,rename
命令可以使這個任務更容易。它只需要一些正規表示式的技巧。
與 mv
命令不同,rename
不允許你簡單地指定舊名稱和新名稱。相反,它使用類似於 Perl 中的正規表示式。在下面的例子中,s
指定我們將第一個字串替換為第二個字串(舊的),從而將 this.new
變為 this.old
。
$ rename 's/new/old/' this.new
$ ls this*
this.old
使用 mv this.new this.old
可以更容易地進行更改一個,但是將字串 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
命令不限於更改副檔名。如果你需要將名為 report.*
的檔案更改為 review.*
,那麼可以使用以下命令做到:
$ rename 's/report/review/' *
正規表示式中的字串可以更改檔名的任何部分,無論是檔名還是副檔名。
$ rename 's/123/124/' *
$ ls *124*
status.124 report124.txt
如果你在 rename
命令中新增 -v
選項,那麼該命令將提供一些反饋,以便你可以看到所做的更改,或許會包含你沒注意的。這讓你注意到並按需還原更改。
$ rename -v 's/123/124/' *
status.123 renamed as status.124
report123.txt renamed as report124.txt
另一方面,使用 -n
(或 --nono
)選項會使 rename
命令告訴你將要做的但不會實際做的更改。這可以讓你免於執行不不想要的操作,然後再還原更改。
$ 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)
如果你對這些更改滿意,那麼就可以執行不帶 -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)
為確保句點按照字面意思執行,請在它的前面加一個反斜槓。這將使其不被解釋為萬用字元並匹配任何字元。請注意,進行此更改時,僅選擇了 .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)
下面的命令會將檔名中的所有大寫字母更改為小寫,除了使用 -n
選項來確保我們在命令執行之前檢查將做的修改。注意在正規表示式中使用了 y
,這是改變大小寫所必需的。
$ 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)
在上面的例子中,我們將所有大寫字母更改為了小寫,但這僅對以大寫字母 W
開頭的檔名。
總結
當你需要重新命名大量檔案時,rename
命令非常有用。請注意不要做比預期更多的更改。請記住,-n
(或者 --nono
)選項可以幫助你避免耗時的錯誤。
via: https://www.networkworld.com/article/3433865/how-to-rename-a-group-of-files-on-linux.html
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 如何在 Linux 上一次性批量重新命名一組檔案?Linux
- 如何在 Linux 中一次重新命名多個檔案Linux
- 在 Linux 上覆制和重新命名檔案Linux
- 如何在 Linux 中分割和重組檔案!Linux
- 如何在macOS中一次重新命名多個檔案Mac
- 如何在 Linux 上建立和使用交換檔案Linux
- 如何在Linux中查詢一個檔案Linux
- 如何在 Linux 上用密碼加密和解密檔案Linux密碼加密解密
- 新手進階:如何在macOS中一次重新命名多個檔案Mac
- 如何在 Linux 上識別同樣內容的檔案Linux
- linux組資訊檔案Linux
- Linux上傳檔案Linux
- 如何在Android上播放swf檔案Android
- 如何在 Linux 上安裝/解除安裝一個檔案中列出的軟體包?Linux
- 重新命名一千個檔案要多久? Name Mangler 快速為大量檔案重新命名
- Linux——拖拽上傳檔案Linux
- Oracle12C新特性-線上重新命名遷移資料檔案(一)Oracle
- 如何在Ubuntu上使用FreeFileSync同步檔案Ubuntu
- 如何在 Linux 上覆制檔案/資料夾到遠端系統?Linux
- 如何在Linux上使用Osquery設定檔案完整性監控(FIM)Linux
- 12c pdb線上移動資料檔案或者重新命名資料檔案
- 如何在Linux中進行檔案切割操作?Linux
- 如何在 Linux下進行檔案切割操作?Linux
- 批次檔案重新命名的方法
- 如何在前端顯示一個線上的ppt檔案前端
- NodeJS+formidable實現檔案上傳加自動重新命名NodeJSORM
- linux大檔案上傳(nc)Linux
- 如何在 Ubuntu 上使用 ZFS 檔案系統Ubuntu
- 教你如何在CentOS上使用Samba共享檔案CentOSSamba
- 如何在Mac上減少PDF檔案大小Mac
- day58:Linux:BashShell&linux檔案管理&linux檔案下載上傳Linux
- Linux伺服器上傳檔案傳送檔案Linux伺服器
- 新手教程:如何在 Linux 下解壓 Zip 檔案Linux
- 如何在 Mac 上使用預覽將 .pdf 檔案更改為 .jpg 檔案Mac
- 如何在 Linux 伺服器上設定 ulimit 和檔案描述符數限制Linux伺服器MIT
- 精通 Linux 上的檔案搜尋Linux
- Linux之檔案管理(一)Linux
- 如何在 Linux 中找到並刪除重複檔案Linux