Shell指令碼批量修改檔案尾碼名代碼分享_linux shell

來源:互聯網
上載者:User

早上本想將一些照片上傳到相簿中,但是由於所有照片的副檔名都是JPG而不是小寫jpg,因此造成了“格式不正確”而不能上傳照片。此刻就產生了這樣一個問題:使用shell指令碼如何批量將所有檔案的副檔名JPG都改成小寫jpg?

既然要批量替換檔案名稱,那麼肯定得用一個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."

附:另一個版本

複製代碼 代碼如下:

#!/bin/sh
# file name : rename_suffix.sh
# author: zhouhh
# Email: ablozhou@gmail.com
# Date : 2008.4.1
 
echo "input what suffix will be replaced :"
read SUFFIX_SRC
echo "input what suffix of file to rename to:"
read SUFFIX_DST
 
 
for i in *.$SUFFIX_SRC
do
    if [ -e $i ]; then
        echo "mv $i to `basename $i .$SUFFIX_SRC`.$SUFFIX_DST"
        mv $i `basename $i .$SUFFIX_SRC`.$SUFFIX_DST
    else
        echo "file does not exist."
        exit -1
    fi
 
done

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.