溫馨提示×

溫馨提示×

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

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

Linux Shell實現批量重命名的方法

發布時間:2021-08-18 23:37:11 來源:億速云 閱讀:168 作者:chen 欄目:大數據

本篇內容主要講解“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實現批量重命名的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

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