本篇內容主要講解“Linux Shell實現批量重命名的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Linux Shell實現批量重命名的方法”吧!
0、用類似 GPRename 這樣的圖形軟件進行批量重命名
1、刪除所有的 .bak 后綴:
rename 's/\.bak$//' *.bak
2、把 .jpe 文件后綴修改為 .jpg:
rename 's/\.jpe$/\.jpg/' *.jpe
3、把所有文件的文件名改為小寫:
rename 'y/A-Z/a-z/' *
4、將 abcd.jpg 重命名為 abcd_efg.jpg:
for var in *.jpg; do mv "$var" "${var%.jpg}_efg.jpg"; done
5、將 abcd_efg.jpg 重命名為 abcd_lmn.jpg:
for var in *.jpg; do mv "$var" "${var%_efg.jpg}_lmn.jpg"; done
6、把文件名中所有小寫字母改為大寫字母:
for var in `ls`; do mv -f "$var" `echo "$var" |tr a-z A-Z`; done
7、把格式 *_?.jpg 的文件改為 *_0?.jpg:
for var in `ls *_?.jpg`; do mv "$var" `echo "$var" |awk -F '_' '{print $1 "_0" $2}'`; done
8、把文件名的前三個字母變為 vzomik:
for var in `ls`; do mv -f "$var" `echo "$var" |sed 's/^.../vzomik/'`; done
9、把文件名的后四個字母變為 vzomik:
for var in `ls`; do mv -f "$var" `echo "$var" |sed 's/....$/vzomik/'`; done
10. 把.txt變成.txt_bak 的后綴
ls *.txt|xargs -n1 -i{} mv {} {}_bak
xargs -n1 –i{} 類似for循環,-n1意思是一個一個對象的去處理,-i{} 把前面的對象使用{}取代,mv {} {}_bak 相當于 mv 1.txt 1.txt_bak
find ./*.txt -exec mv {} {}_bak \;
這個命令中也是把{}作為前面find出來的文件的替代符,后面的”\”為”;”的脫意符,不然shell會把分號作為該行命令的結尾.
==================================================================
既然要批量替換文件名,那么肯定得用一個for循環依次遍歷指定目錄下的每個文件。對于每個文件,假如該文件的名稱為name.oldext,那么我們必須原始文件名中挖出name,再將它與新的文件擴展名newext拼接形成新的文件名name.newext。依照這樣的思路,就誕生了下面的腳本:
#!/bin/bash
oldext="JPG"
newext="jpg"
dir=$(eval pwd)
for file in $(ls $dir | grep .$oldext)
do
name=$(ls $file | cut -d. -f1)
mv $file ${name}.$newext
done
echo "change JPG=====>jpg done!"
下面對針對這個程序作簡單說明:
1.變量oldext和newext分別指定舊的擴展名和新的擴展名。dir指定文件所在目錄;
2.“ls $dir | grep .$oldext”用來在指定目錄dir中獲取擴展名為舊擴展名的所有文件;
3.在循環體內先利用cut命令將文件名中“.”之前的字符串剪切出來,并賦值給name變量;接著將當前的文件名重命名為新的文件名。
通過這個腳本,所有照片的擴展名都成功修改。為了使這個腳本更具有通用型,我們可以增加幾條read命令實現腳本和用戶之間的交互。改進版的腳本如下:
#!/bin/bash
read -p "old extension:" oldext
read -p "new extension:" newext
read -p "The directory:" dir
cd $dir
for file in $(ls $dir | grep .$oldext)
do
name=$(ls $file | cut -d. -f1)
mv $file ${name}.$newext
echo "$name.$oldext ====> $name.$newext"
done
echo "all files has been modified."
修改后的腳本可以批量修改任意擴展名。
到此,相信大家對“Linux Shell實現批量重命名的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。