Linux中國

如何在 Linux 上重命名一組文件

幾十年來,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

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國