這篇文章將為大家詳細(xì)講解有關(guān)linux如何快速批量重命名文件,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、壽光網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為壽光等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
1. rename命令
顧名思義,rename命令就是用來進(jìn)行重命名文件名的。rename命令有非常強(qiáng)大的功能,我們可以用它來實(shí)現(xiàn)各種各樣復(fù)雜的文件名的修改。但是,本文只介紹它最最基本的功能,后期再更新rename其它強(qiáng)大的重命名功能。rename的最基本的格式如下:
rename 源字符串 目標(biāo)字符串 文件
其中,源字符串表示原文件名需要替換的字符串,可以是原文件名的全部或部分;目標(biāo)字符串就是想要替換成的字符串;文件就是需要更改文件名的文件列表,可以是一個(gè)或多個(gè)。
現(xiàn)假如目錄下有一堆 atb_mod_01.cpp,atb_mod_02.cpp,atb_mod_03.cpp,atb_mod_04.cpp 等形式的文件,我們的需求是將文件名中的 mod 改成 adb,那么完成這個(gè)需求的命令如下:
[alvin@VM_0_16_centos exp3]$ ls atb_mod_01.cpp atb_mod_02.cpp atb_mod_03.cpp atb_mod_04.cpp[alvin@VM_0_16_centos exp3]$ rename mod adb *[alvin@VM_0_16_centos exp3]$ lsatb_adb_01.cpp atb_adb_02.cpp atb_adb_03.cpp atb_adb_04.cpp
2. mv命令配合for循環(huán)方式
假如我們現(xiàn)在有一堆 .txt 文件,我們想將它們的后綴改成 .cpp。先來看完整的代碼:
#!/bin/bash for name in `ls *.txt` do mv $name ${name%.txt}.cpp done
我們都知道,在Linux里重命名是用 mv 命令,那批量重命名自然會(huì)想到用循環(huán)語句嵌套mv命令。
在這里,我們用 ls *.txt 將當(dāng)前目錄下所有的txt文件全部列出來,然后逐個(gè)放在name變量里去循環(huán)操作。
在循環(huán)體里,我們使用mv命令進(jìn)行重命名。這里我們使用 ${name%.txt} 這種字符串處理方式,表示從name尾部開始刪除與 .txt 匹配的最小部分,并返回剩余部分。之后,再加上 .cpp 后綴。通過這種操作,我們就可以將文件名后綴從.txt改為.cpp。最后我們用mv命令將這個(gè)文件名真正改過來。
3. sed命令配合for循環(huán)方式
假如我們現(xiàn)在有一堆文件,文件名格式是 test01.txt,test02.txt,test03.txt,test04.txt 也就是前半部分是英文,后半部分是數(shù)字。我們現(xiàn)在想將文件名改成 test-01.txt 這種形式。這次,我們用sed命令來完成這個(gè)需求。
我們還是先來看看完整的代碼。
#!/bin/bash for file in `ls *.txt` do newFile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'` mv $file $newFile done
前面一樣用 ls \*.txt 來獲取所有的 .txt 文件。之后再用echo命令將其順次輸出,作為sed命令的輸入。
接下來,到達(dá)關(guān)鍵部分了。乍一看sed的命令可能有點(diǎn)可怕,但老司機(jī)早已習(xí)以為常了。反引號里的內(nèi)容其實(shí)是這樣的基本結(jié)構(gòu):
s/ 原字符串 / 替代的字符串 /
這里我們用到了分組匹配,也就是用括號按照一定的正則表達(dá)式將原字符串進(jìn)行分組,后面再用 \1,\2,\3…… 來引用前面的分組,從而在替代的字符串里拼湊成相應(yīng)的格式。
前文已講述,原文件名是由前部分英文及后部分?jǐn)?shù)字所構(gòu)成的,英文可以用 [a-z]+ 表示,數(shù)字可以用 [0-9]+ 表示。注意不要忘記加號,表示前面字符的若干重復(fù)。然后,我們用\1、\2分別引用前面的對應(yīng)部分,再用橫桿連起來,于是就成了這樣:
s/([a-z]+)([0-9]+)/\1-\2/
因?yàn)樵诓煌腟hell里,括號及加號可能會(huì)有不同的含義,所以前面要再加一個(gè)轉(zhuǎn)義符,于是就成了前面所見到的樣子。
再之后,同樣使用mv命令完成重命名動(dòng)作。
關(guān)于“l(fā)inux如何快速批量重命名文件”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。
網(wǎng)站題目:linux如何快速批量重命名文件
轉(zhuǎn)載來于:http://chinadenli.net/article0/giisoo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站營銷、網(wǎng)站策劃、網(wǎng)站導(dǎo)航、外貿(mào)網(wǎng)站建設(shè)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)