shell檔案名稱分割,重新命名移動批量檔案 1.分割出檔案名稱和副檔名file="sample.jpg"name=${file%.*}echo "File name is: $name" 輸出:File name is: sample這裡的${file%.*}的意思是:用file的內容,從右邊匹配字串,這裡是.*,說明遇見'.'號結束,然後取出剩餘的左邊的部分作為結果返回extension=${file#*.}echo "File extension is: $extension" 輸出:File extension is: jpg這裡的${file#*.}的意思是:這和前面的那個相反,他是從左邊開始匹配字串,遇見'.'後,把剩餘的部分給截取下來作為結果返回 擴充:這裡一個%號和#號是短匹配,即第一次遇見時就截止而可以使用%%和##做為長匹配 3.重新命名和移動批量檔案1.當從相機中匯出的檔案名稱字不統一時,可以施行統一的更改名字,如指定在某一天等#! /bin/bash# Filename:renameJpgAndPng.sh # Description: Rename jpg and png files count=1for img in *.png *.jpgdonew="image-$count.${img##*.}" # to be like 'image-x.jpg'mv "$img" "$new" 2> /dev/null if [ $? -eq 0 ];then echo "Renaming $img to $new."let count++fidone 解釋:定義一個數字變數,並讀取當前檔案夾下的所有以png和jpg結尾的檔案,變數new是新檔案的格式,先是加image-首碼,和$count,並進行長匹配,擷取檔案尾碼名。然後通過mv命令來移動重新命名,若產生錯誤2(stderr),則重新導向到/dev/null進行回收垃圾。$? 的意思是上一次操作返回的結果,如果是0,則代表操作成功,則輸出轉換成功提示