系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當(dāng)前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux rename命令

Linux rename命令文件重命名的用法匯總

時間:2014-12-09 11:27:00 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機(jī)瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20141208/32097.html 手機(jī)查看 評論

  Linux命令中的rename命令主要用于給文件重命名,與mv命令有些類似,但rename可以對批量文件進(jìn)行重命名,而mv命令則只能對單個文件重命名,下面就給大家詳細(xì)介紹下Linux rename命令的使用方法吧。

 Linux rename命令文件重命名的用法匯總

  Linux的 rename 命令有兩個版本,一個是C語言版本的,一個是Perl語言版本的,早期的Linux發(fā)行版基本上使用的是C語言版本的,現(xiàn)在已經(jīng)很難見到C語言版本的了,由于歷史原因,在Perl語言大紅大紫的時候,Linux的工具開發(fā)者們信仰Perl能取代C,所以大部分工具原來是C版本的都被Perl改寫了,因?yàn)镻erl版本的支持正則處理,所以功能更加強(qiáng)大,已經(jīng)不再需要C語言版本的了。

  如何區(qū)分系統(tǒng)里的rename命令是哪個版本的?

  輸入 man rename 看到第一行是

  RENAME(1) Linux Programmer’s Manual RENAME(1)

  那么 這個就是C語言版本的。

  而如果出現(xiàn)的是:

  RENAME(1) Perl Programmers Reference Guide RENAME(1)

  這個就是Perl版本的了!

  兩個版本的語法差異:

  C語言的,按照man上面的注解,

  rename的語法格式是:

  rename fromtofile

  這個命令有三個參數(shù),分別是 from : 修改什么名字, to:改成什么名字, file 需要修改的文件是哪些。

  用法示例:

  比如,有一批文件,都是以 log開頭的, log001.txt, log002.txt ……。 一直到 log100.txt

  現(xiàn)在想要把這批文件的log全部替換為 history

  rename log history log*

  這句命令的意思很明白了,把 以 log開頭的所有文件中的 log字符替換為 history

  這樣替換后的文件是: history001.txt, history002.txt …。。 一直到 history100.txt

  rename C語言版本的另一個man示例是把后綴名批量修改,

  比如我們要將所有 jpeg的后綴名圖片文件修改為 jpg文件。

  rename .jpeg.jpg*.jpeg

  這樣,所有以 .jpeg擴(kuò)展的后綴名全部被修改為 .jpg

  現(xiàn)在總結(jié)一下rename C語言版本所能實(shí)現(xiàn)的功能: 批量修改文件名,結(jié)果是每個文件會被用相同的一個字符串替換掉!也就是說,無法實(shí)現(xiàn)諸如循環(huán) 然后按編號重命名!

  Perl 版本的批量重命名,帶有Perl的好處是,你可以使用正則表達(dá)式來完成很奇特的功能。

  perl 版本的參數(shù)格式:

  rename perlexprfiles

  注意,perl版本的rename只有兩個參數(shù),第一個參數(shù)為perl正則表達(dá)式,第二個參數(shù)為所要處理的文件

  man rename的幫助示例:

  1) 有一批文件,以 .bak結(jié)尾,現(xiàn)在想把這些 .bak 統(tǒng)統(tǒng)去掉。

  rename ‘s/\.bak$//’ *.bak

  這個命令很簡單,因?yàn)槲疫沒有系統(tǒng)學(xué)習(xí)過perl,我不知道perl里替換字符串是不是這么干的,但sed是這么干的,所以如果你有sed或者tr基礎(chǔ),很容易明白,這個替換和sed里的正則語法是一模一樣的。

  2) 把所有文件名內(nèi)含有大小字母的,修改為小寫字母。

  rename ‘y/A-Z/a-z/’ *

  依然和sed的替換語法一樣,不用多解釋,如果看不懂的話,可以系統(tǒng)學(xué)習(xí)一下sed先。

  還有幾個比較實(shí)用的例子:

  批量去掉文件名里的空格

  Linux文件名本來是不支持空格的,不知道什么時候允許了,當(dāng)然,在命令行調(diào)用文件的時候,空格是很有問題滴,比如你 原來可以直接 mv oldfile newfile 但有空格就不行了 , 得加雙引號: mv “oldfile” “newfile” 或者用反斜杠轉(zhuǎn)移 \[] ,這樣還好,但如果你直接把含有空格的圖片名引入 Latex文檔,Latex生成pdf的時候會直接打印出文件名,之前這個問題苦惱了我很久,我生成的pdf怎么老是出現(xiàn)文件名呢?后來才發(fā)現(xiàn)原來是文件名內(nèi)含有空格的問題!windows系統(tǒng)下生成的文件名是天生含有空格的,雖然很討厭,但有些惠普掃描儀生成的圖片默認(rèn)就加入了空格,沒有辦法,只好去掉他,在系統(tǒng)研究rename命令前,我是用 mv 去除空格的。

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨(dú)特見解

立即評論

以上留言僅代表用戶個人觀點(diǎn),不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

官方交流群 軟件收錄