利用shell批量變更檔尾碼名

來源:互聯網
上載者:User
利用shell批量變更檔尾碼名

有的時候需要將伺服器中的記錄檔改成另一種統一格式,使用指令碼來自動執行是個好主意。本文以將jpeg格式檔案改成jpg格式為例。

用指令碼建立10個檔案,以jpeg作為尾碼,代碼如下:

#!/bin/shfor ((i=0;i<=10;i++))do    touch ${i}.jpegdone

執行完上面的指令碼後會看見在目前的目錄下產生10個檔案,檔案名稱的構成為name.suffix

為了批量更改目前的目錄下的檔案,我們需要遍曆目前的目錄,獲得需要變更檔的name,然後與新的檔案尾碼進行拼接,形成新的檔案名稱name.newsuffix。

代碼如下:

#!/bin/sholdsuffix="jpeg"newsuffix="jpg"dir=$(eval pwd)for file in $(ls $dir | grep .${oldsuffix})    do        name=$(ls ${file} | cut -d. -f1)        mv $file ${name}.${newsuffix}    doneecho "change jpeg to jpg successd!"
oldsuffix是檔案舊的尾碼,newsuffix是檔案新的尾碼 $(cmd)是命令替換,會在語句運行時執行cmd命令,然後返回cmd命令的執行結果;eval 的作用是再次執行命令列處理(不是對一個命令執行兩次),也就是將eval後跟的參數整合成正確的命令列命令執行。$(eval pwd)執行後返回的結果是指令碼所在的目錄路徑。 在迴圈語句中我們使用cut命令將匹配的檔案name剪下出來。cut命令從檔案的每一行剪下位元組、字元和欄位並將其送至標準輸出。參數-d用於自訂分隔字元,預設為定位字元,程式中的-d.表示以.作為分隔字元;參數-f指定截取顯示哪個地區,-f1表示截取第一個地區,也就是檔案名稱的name。

參考文章連結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.