1. 程式人生 > >Linux: mv, rename單次及批次修改檔案名稱及字尾(批量修改檔名)

Linux: mv, rename單次及批次修改檔案名稱及字尾(批量修改檔名)

在Windows 系統中,無論我們要重新命名資料夾或是檔案, 
通常都點下右鍵後選擇重新命名即可,


如果對快捷鍵比較熟,直接按下F2 可以更快地達成目的。 
而在Linux系統中,重新命名資料夾或檔案也可以透過同一個指令來達成,這個指令是mv ! mv 是move 的縮寫,他除了移動檔案資料夾的功能外也可以同時重新命名。 
所以其實仔細想想拿他來重新命名檔案也不會很難理解啦, 
重新命名時只是把檔案移動到同一個資料夾,然後趁著移動時把檔名給順便改了! 

說了這麼多那mv 指令到底該怎麼使用呢?

Java程式碼  收藏程式碼
  1. # mv $1 $2  
  2. # $1: 舊檔案或資料夾名稱  
  3. # $2: 新的檔案或資料夾名稱  
  4. mv oldname.txt newname.txt  

上面的方法是用來重新命名單一檔案或資料夾, 
但是當一個目錄資料夾底下有很多有特定規則檔名的檔案需要改名, 
例如相機產生的檔案IMG001.jpg~IMG999.jpg 超多檔案, 
這絕對不可能直接用mv 一個個慢慢敲來改名的。 
這時候另一個指令就可以派上用場了, 
rename 這個指令可以用來批次修改檔名共同的部分,使用方式如下:

Java程式碼  收藏程式碼
  1. # rename $1 $2 $3  
  2. # $1: 要被取代的關鍵字  
  3. # $2: 新的關鍵字  
  4. # $3: 檔名符合這個規則的才取代  
  5. # 把IMG001.jpg, IMG002.jpg… 換成img001.jpg, img002.jpg…   
  6.  rename IMG img IMG*  
  7.  # 把所有.htm 檔案改成.html  
  8.  rename .htm .html *.htm  
  9.  # 把檔案foo1, ..., foo9, foo10, ..., foo278.  
  10.  # 改成foo001, ..., foo009, foo010, ..., foo278.  
  11.  rename foo foo0 foo?  
  12.  rename foo foo0 foo??  

來源:http://werdna1222coldcodes.blogspot.com/2012/04/linux-scriptmv-rename.html

rename

相關命令:mv
rename 用於 對檔案進行命名管理,可進行批量命名並支援正則表示式, 
rename命令存在兩個版本用法上有所區別 
一個是 C語言版本支援萬用字元,
另一個是 Perl版本.支援正則表示式

引數

-n    操作預覽,在不更改檔名稱情況下,顯示執行後的結果
-f    強制執行
 
【常用萬用字元說明】
 ?    表示一個任意字元
 *    表示一個或一串任意字元
-------------------------------------------------
【常用正則表示式符號說明】
^    匹配輸入的開始位置
$    匹配輸入的結尾
.    匹配除換行符外的任意字元
+    匹配前一個字元一次或多次 例如,"zo+"可以匹配"zoo",但不匹配"z"
[a-z]    表示某個範圍內的字元,例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字元。
[^m-z]    否定的字元區間。與不在指定區間內的字元匹配。
Java程式碼  收藏程式碼
  1. [root@localhost www]# rename 's/\.sh/\.php/' *        #將當前目錄下.sh字尾的檔案,變成.php  
  2. [root@localhost www]# rename 's/$/\.bak/' /home/www/*.php     #給www目錄下的.php加上bak字尾  
  3. [root@localhost www]# rename 's/^/bak_/' *.bin     #給當前目錄下的.bin字尾檔案加上bak_字首  
  4. [root@localhost www]# rename 's/\.bin$//' *       #批量刪除當前目錄下所有檔案的.bin 字尾  
  5. [root@localhost www]# rename 's/A-Z/a-z/' *       #修改當前目錄所有檔名為小寫  

其他方法:

C程式碼  收藏程式碼
  1. for i in `ls`; do mv -f $i `echo $i | sed 's/oldstring/newstring/'`;  done  

或者

Java程式碼  收藏程式碼
  1. #使用perl語言  
  2. find  ./ -name '*.sh' | xargs perl -pi -e 's|string1|string2|g'  
  3. #使用sed程式  
  4. find  ./ -name '*.sh' | xargs sed -i 's/string1|string2/g'  

 上面的'*.sh'替換成需要修改的檔名,string1是需要修改的字串,string2是修改後的字串。

相關推薦

Linux: mv, rename批次修改檔案名稱字尾批量修改檔名

在Windows 系統中,無論我們要重新命名資料夾或是檔案, 通常都點下右鍵後選擇重新命名即可, 如果對快捷鍵比較熟,直接按下F2 可以更快地達成目的。 而在Linux系統中,重新命名資料夾或檔案也可以透過同一個指令來達成,這個指令是mv ! mv 是move 的縮寫,

linux 批量替換檔案內容查詢某目錄下所有包含某字串的檔案批量修改檔案內容

sed replace word / string syntax The syntax is as follows: C程式碼   sed -i 's/old-word/new-word/g' *.txt   GNU sed command can edit files in place (

Linux修改檔案屬性許可權

修改檔案使用者組: (組名必須在/etc/group檔案中) chgrp [-R] grpname filename|dirname -R:將目錄內檔案的所屬組都改為指定組名 eg: 修

Linux /etc/profile檔案詳解修改後如何立即生效使用source命令

Linux /etc/profile檔案的改變會涉及到系統的環境,也就是有關Linux環境變數的東西,學習Linux要了解Linux profile檔案的相關原理,這裡對則以檔案進行具體分析。這裡修改會對所有使用者起作用。  1、Linux是一個多使用者的作業系統。每個使用者

ionic 修改應用名稱 修改百度離線地圖 點聚合 圖標

離線 百度離線地圖 分享 應用名稱 技術分享 修改 com http ges 1.ionic 修改應用名稱 2.修改百度離線地圖 點聚合 圖標 ionic 修改應用名稱 及 修改百度離線地圖 點聚合 圖標

linux操作遠端檔案拷貝、遠端免密登陸、修改虛擬機器主機名課堂學習筆記

總體目錄   一、檔案拷貝 二、遠端檔案拷貝 三、遠端登入 四、實現SSH遠端免密登入 五、嘗試遠端無密拷貝單個檔案 六、免密拷貝目錄裡的多個檔案 七、修改主機名 一、檔案拷貝 在192.168.225.100虛擬機器上,在home目錄裡建立

shell命令以及執行原理、檢視或修改掩碼umaskLinux許可權管理、Linux設定檔案訪問許可權chmod、粘滯位、修改檔案的擁有者chown修改檔案的所屬組chgrp

shell命令以及執行原理:   Linux嚴格意義上說的是一個作業系統,我們稱之為”核心”,但是我們普通使用者,不能直接使用核心,而是通過核心的”外殼”程式,也就是所謂的shell,來與核心溝通。   Linux中的命令大多數都是可執行程式。但其實捕捉我們

Linux chmod命令 修改檔案許可權被禁止not permitted)的解決辦法

發現目錄下有個.user.ini檔案無法刪除一直提示這個錯誤,  終於查到用 chattr 可以解除這個限制 首先先檢視一下屬性 lsattr .user.ini  ----i------e- .user.i

python基礎五:元組的index,del,count方法字典的修改、增加、刪除del、clear、遍歷keys、values、items

元組:index、del、count的方法。index的用法:用來查詢元組中元素對應的下標。格式:元組變數名.index(查詢的元素)例項:    del的用法:用來刪除整個元組。格式:del       元組變數名例項:      count的用法:用來統計元組中指定元素的

Linux上安裝Apache環境安裝過程報錯解決方案零初始環境

Note:要從零開始搭建,就不要嫌中間遇到各種eggache的問題! 一.下載apache原始碼    得到檔案 httpd-2.4.3.tar.gz 2. 上傳到你的伺服器目錄,如:/home/tnuser/installers     解壓:tar -zxv

spring cloud系列教程第八篇-修改服務名稱獲取註冊中心註冊者的資訊

spring cloud系列教程第八篇-修改服務名稱及獲取註冊中心註冊者的資訊 本文主要內容: 1:管理頁面主機名及訪問ip資訊提示修改 2:獲取當前註冊中心的服務列表及每個服務對於的服務提供者列表 本文是由凱哥(凱哥Java:kagejava)釋出的《spring cloud系列》教程的總第八篇:《修改服務

循環控制狀態返回值的應用實踐分析apache日誌

循環語句 ns3 總結 字段 順序 awk 字節數 shell 訪問日誌 12.1 break,continue,exit,return的區別和對比break和continue在條件語句以及循環語句(for,while,if等)中用於控制程序的走向;exit用戶終止所有語句

Linux九陰真經之九陰白骨爪殘卷1加密和安全

con touch 接收 sock 就是 any bss pan 字節數 CA和證書 1、KPI :公共秘鑰體系 簽證機構:CA 註冊機構:RA 證書吊銷列表:CRL 證書存取庫 509

VMware虛擬機克隆Linux(CentOS)系統後找不到eth0網卡的問題圖文詳解

sunny 電腦 安裝 bubuko 幹貨 IV onf 虛擬機克隆 技巧 問題現象:   有時候,會使用VMware虛擬機的的克隆功能,快速的復制已安裝好的Linux系統。   可是克隆完之後,會發現沒有eth0網卡。

Spring之強制修改某個方法的行為Arbitrary method replacement

save ons obj tco cif until init this replacer A less commonly useful form of method injection than Lookup Method Injection is t

PS中如何提高修改psd圖片的效率自動選擇工具

缺點 分享圖片 效率 遮蓋 去掉 自己的 備份 利用 inf 在photoshop中制作圖片的時候,一般要養成保留psd格式的習慣,縱然普通時候jpg,png格式常用,考慮到以後可能需要修改,也應該備份一下。如果考慮到以後需要修改,可每次成品保存成兩個,一個psd格式,一個

關於JBoss7.X修改post傳輸資料量max-post-size的問題

轉自: https://blog.csdn.net/zhangyunhao108/article/details/53140569     JBoss7.X修改max-post-size在網上百度了好久,都不是7.x修改的方式,自己用半吊子的英文水平在官網上找了找,有自己試了試,終

Oracle -- 記一ADG庫遷移過程小結 -- 上篇ADG建庫

背景:   客戶新採購一批機器,需要把原ADG庫資料移到新機器上,作業系統不變,資料庫版本不變。   遠端安裝,採用xmanager軟體連線搭建。   環境:   作業系統:Oracle Linux Server release 6.8    oracle資料庫版本:11g r

linux運維工程師面試常見問題整理8--預設埠篇持續更新ing

歡迎喜歡實施運維及資料的小夥伴加入群進行談論! 運維技術群:263859509 1.中介軟體類 中介軟體名稱 預設埠 tomcat 8080 wildfly

模板容器類迭代器的實現二基於連結串列

節點類標頭檔案node.h: #ifndef MAIN_WTF_NODE1_H #define MAIN_WTF_NODE1_H #include <cstdlib> namespace main_wtf_6B {template<class Item>class