自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

教你三招快速文件批量重命名方法

系統(tǒng) Linux
本文良許將介紹三種最基本的文件重命名方法,因?yàn)楸容^基本,所以老司機(jī)可以到此為止。

在我們的工作生活中,不管是程序員還是非程序員,我們都會(huì)遇到過一個(gè)需求,那就是對(duì)一堆的文件進(jìn)行重命名。在Windows下有很多優(yōu)秀的軟件可以幫助我們完成這個(gè)需求,而在Linux環(huán)境下,我們可以簡(jiǎn)單敲一些代碼就可以完成這個(gè)需求。

本文良許將介紹三種最基本的文件重命名方法,因?yàn)楸容^基本,所以老司機(jī)可以到此為止。

[[341695]]

1. rename命令

顧名思義,rename命令就是用來(lái)進(jìn)行重命名文件名的。rename命令有非常強(qiáng)大的功能,我們可以用它來(lái)實(shí)現(xiàn)各種各樣復(fù)雜的文件名的修改。但是,本文只介紹它最最基本的功能,后期再更新rename其它強(qiáng)大的重命名功能。rename的最基本的格式如下:

  1. 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è)需求的命令如下:

  1. [alvin@VM_0_16_centos exp3]$ ls 
  2. 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。先來(lái)看完整的代碼:

  1. #!/bin/bash 
  2. for name in `ls *.txt` 
  3. do 
  4.     mv $name ${name%.txt}.cpp 
  5. done 

我們都知道,在Linux里重命名是用 mv 命令,那批量重命名自然會(huì)想到用循環(huán)語(yǔ)句嵌套mv命令。

在這里,我們用 ls *.txt 將當(dāng)前目錄下所有的txt文件全部列出來(lái),然后逐個(gè)放在name變量里去循環(huán)操作。

在循環(huán)體里,我們使用mv命令進(jìn)行重命名。這里我們使用 ${name%.txt} 這種字符串處理方式,表示從name尾部開始刪除與 .txt 匹配的最小部分,并返回剩余部分。之后,再加上 .cpp 后綴。通過這種操作,我們就可以將文件名后綴從.txt改為.cpp。最后我們用mv命令將這個(gè)文件名真正改過來(lái)。

3. sed命令配合for循環(huán)方式

假如我們現(xiàn)在有一堆文件,文件名格式是 test01.txt,test02.txt,test03.txt,test04.txt 也就是前半部分是英文,后半部分是數(shù)字。我們現(xiàn)在想將文件名改成 test-01.txt 這種形式。這次,我們用sed命令來(lái)完成這個(gè)需求。

我們還是先來(lái)看看完整的代碼。

  1. #!/bin/bash 
  2. for file in `ls *.txt` 
  3. do 
  4.      newFile=`echo $file | sed 's/\([a-z]\+\)\([0-9]\+\)/\1-\2/'` 
  5.      mv $file $newFile 
  6. done 

前面一樣用 ls \*.txt 來(lái)獲取所有的 .txt 文件。之后再用echo命令將其順次輸出,作為sed命令的輸入。

接下來(lái),到達(dá)關(guān)鍵部分了。乍一看sed的命令可能有點(diǎn)可怕,但老司機(jī)早已習(xí)以為常了。反引號(hào)里的內(nèi)容其實(shí)是這樣的基本結(jié)構(gòu):

  1. s/ 原字符串 / 替代的字符串 / 

這里我們用到了分組匹配,也就是用括號(hào)按照一定的正則表達(dá)式將原字符串進(jìn)行分組,后面再用 \1,\2,\3…… 來(lái)引用前面的分組,從而在替代的字符串里拼湊成相應(yīng)的格式。

前文已講述,原文件名是由前部分英文及后部分?jǐn)?shù)字所構(gòu)成的,英文可以用 [a-z]+ 表示,數(shù)字可以用 [0-9]+ 表示。注意不要忘記加號(hào),表示前面字符的若干重復(fù)。然后,我們用\1、\2分別引用前面的對(duì)應(yīng)部分,再用橫桿連起來(lái),于是就成了這樣:

  1. s/([a-z]+)([0-9]+)/\1-\2/ 

因?yàn)樵诓煌腟hell里,括號(hào)及加號(hào)可能會(huì)有不同的含義,所以前面要再加一個(gè)轉(zhuǎn)義符,于是就成了前面所見到的樣子。

再之后,同樣使用mv命令完成重命名動(dòng)作。

本文授權(quán)轉(zhuǎn)載自公眾號(hào)「良許Linux」。良許,世界500強(qiáng)外企Linux開發(fā)工程師,公眾號(hào)里分享大量Linux干貨,歡迎關(guān)注!

 

責(zé)任編輯:趙寧寧 來(lái)源: 今日頭條
相關(guān)推薦

2024-06-19 10:53:45

2010-03-09 15:23:30

Linux批量重命名

2009-12-22 15:28:51

Linux批量重命名文

2011-07-26 18:06:00

SQL Server數(shù)批量重命名

2010-11-19 13:48:18

2010-03-03 16:11:01

Linux ubant

2009-10-21 14:36:03

VB.NET批量重命名

2019-04-18 10:35:55

Windows 10重命名文件夾

2021-12-26 18:32:26

Python Heic 文件

2011-03-04 09:48:21

PureFTPd

2018-06-25 13:10:16

Linux復(fù)制重命名

2010-12-08 11:46:34

職場(chǎng)

2010-10-15 10:54:29

英文面試

2022-07-05 08:23:21

網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2019-11-11 10:20:10

Linux重命名命令

2021-06-09 10:50:38

OneDNS微步在線

2022-02-09 08:03:26

安全企業(yè)SOC

2017-05-18 15:30:29

2019-06-25 08:04:32

TCPIP網(wǎng)絡(luò)故障

2020-02-20 15:00:06

Java文件導(dǎo)入導(dǎo)出
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)