溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux如何快速批量重命名文件

發布時間:2021-10-23 15:44:42 來源:億速云 閱讀:1323 作者:小新 欄目:系統運維

這篇文章將為大家詳細講解有關linux如何快速批量重命名文件,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

1. rename命令

顧名思義,rename命令就是用來進行重命名文件名的。rename命令有非常強大的功能,我們可以用它來實現各種各樣復雜的文件名的修改。但是,本文只介紹它最最基本的功能,后期再更新rename其它強大的重命名功能。rename的最基本的格式如下:

rename 源字符串 目標字符串 文件

其中,源字符串表示原文件名需要替換的字符串,可以是原文件名的全部或部分;目標字符串就是想要替換成的字符串;文件就是需要更改文件名的文件列表,可以是一個或多個。

現假如目錄下有一堆 atb_mod_01.cpp,atb_mod_02.cpp,atb_mod_03.cpp,atb_mod_04.cpp  等形式的文件,我們的需求是將文件名中的 mod 改成 adb,那么完成這個需求的命令如下:

[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循環方式

假如我們現在有一堆 .txt 文件,我們想將它們的后綴改成 .cpp。先來看完整的代碼:

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

我們都知道,在Linux里重命名是用 mv 命令,那批量重命名自然會想到用循環語句嵌套mv命令。

在這里,我們用 ls *.txt 將當前目錄下所有的txt文件全部列出來,然后逐個放在name變量里去循環操作。

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

3. sed命令配合for循環方式

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

我們還是先來看看完整的代碼。

#!/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命令的輸入。

接下來,到達關鍵部分了。乍一看sed的命令可能有點可怕,但老司機早已習以為常了。反引號里的內容其實是這樣的基本結構:

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

這里我們用到了分組匹配,也就是用括號按照一定的正則表達式將原字符串進行分組,后面再用 \1,\2,\3……  來引用前面的分組,從而在替代的字符串里拼湊成相應的格式。

前文已講述,原文件名是由前部分英文及后部分數字所構成的,英文可以用 [a-z]+ 表示,數字可以用 [0-9]+  表示。注意不要忘記加號,表示前面字符的若干重復。然后,我們用\1、\2分別引用前面的對應部分,再用橫桿連起來,于是就成了這樣:

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

因為在不同的Shell里,括號及加號可能會有不同的含義,所以前面要再加一個轉義符,于是就成了前面所見到的樣子。

再之后,同樣使用mv命令完成重命名動作。

關于“linux如何快速批量重命名文件”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女