歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

Linux Shell腳本攻略學習總結:三

Linux Shell腳本攻略學習總結:三   根據擴展名切分文件名 首先,我們先來看兩個例子: [delphi]  file_jpg="sample.jgp"   name=${file_jpg%.*}   echo File name is : $name   輸出結果:   File name is sample     [delphi]  extension=${file_jpg#*.}   echo Extension is : $extension   輸出結果:Extension is : jpg     工作原理 在第一個任務中,為了從“名稱.擴展名”中取得文件的名字,我們使用了%操作符 ${$var%.*}的含義是: 1.從$var中刪除位於%右側的通配符所匹配的字符串。通配符從右向左進行匹配 2.給var賦值,所以結果會輸出文件名   %屬於非貪婪操作。它從右向左找出匹配通配符的最短結果。還有一個操作符 %% 。這個操作符與 % 相似,但行為模式確實貪婪的,這意味著它會匹配符合條件的最長的字符串。   在第二個任務中,原理是和 % 相似的,只是它的運行過程是從左到右。 操作符 ## 則用 *. 從左到右執行貪婪匹配。   下圖展示一個例子: 其中 URL=“www.google.com”     批量重命名文件 下面這個例子實現的是批量處理文件重命名操作,支持的格式豐富: 首先,我們需要在目錄下放置測試的圖片,如下圖所示:     其中rename.sh就是實現功能的腳本文件,我們運行腳本程序,得到如下所示的輸出:     我們再來看看文件的狀態是不是真的改變了:     下面給出實現的腳本程序: [delphi]  #!/bin/bash   #rename.sh   count=1;   for img in *.[jJ][pP][gG] *.[pP][nN][gG]   do   new=image-$count.${img##*.}   mv "$img" "$new" 2> /dev/null      if [ $? -eq 0 ]   then   echo "Renaming $img to $new"   let count++;   fi   done    
Copyright © Linux教程網 All Rights Reserved