歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux Shell腳本攻略學習總結:三

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

日期:2017/3/1 16:14:01   编辑: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