Linux程式設計(Linux shell程式設計的例子:批量處理檔案)
各位看官們,咱們今天還是接著上一回的內容,列舉具體的例子給大家。閒話休說,言歸正轉。
各位看官們,在實際的工作中經常需要批量處理檔案,比如批量刪除檔案等。咱們今天就通過例子來說明
如何批量操作檔案。咱們今天的內容有批量建立檔案,批量重新命名檔案,批量刪除檔案。看官們批量本質
上是重複做相同的事情,這該使用什麼操作?“迴圈”。臺下已經有看官回答了。完全正確,咱們就是使用
迴圈操作來實現批量這個功能。新建檔案,刪除檔案和重新命名檔案的命令:touch,rm,mv,我想大家都
記得如何使用這些命令吧。如果忘記的話,再通過咱們下面的例子來回顧一下。
各位看官們,新建立一個叫sample.sh的指令碼檔案,然後在裡面輸入佈下的內容,並且儲存。
#! /bin/bash echo "-----------------the starting line of shell-----------------" # create new files for name in Test{1..3}.h do touch $name done #show the files, which is created for name in *.h do echo $name done #rename the files i=0 for name in *.h do newname=${name%.*}-$i mv "$name" "$newname.h" let i++ done #show the new files, which is renamed for name in *.h do echo $name done #remove the files for name in *.h do rm -rf $name done echo "-----------------the ending line of shell-----------------"
在終端中執行該程式可以得到以下的結果:
-----------------the starting line of shell-----------------
Test1.h
Test2.h
Test3.h
Test1-0.h
Test2-1.h
Test3-2.h
-----------------the ending line of shell-----------------
看官們,大家可以看到通過for迴圈操作實現了批量功能。該指令碼檔案會在指令碼檔案所在的目錄中新建立
檔案,大家可以把它放到自己定義的目錄執行。該指令碼中沒有指定專門的目錄,在顯示檔案的時候,也是
會遍歷指令碼所在目錄中的.h檔案,所以會把指令碼第一階段建立的.h檔案顯示出來。該方法在重新命名和刪除
檔案時候也在使用。
看官們,在重新命名的時候,有個新的知識需要和大家說明一下。name%.*表示把變數值中.前面的內容提取
出來。.後面是*表示匹配。例如:name的值是test1.h.經過提取後會得到test1,.h被捨棄。還有一種
方法:name#*.它表示把變數值中.後面的內容提取出來。例如:name的值是test1.h.經過提取後會得
到h,test1.會被捨棄。該方法在提取檔名,或者檔案字尾時很有用。
各位看官們,今天的例子就到此為止,欲知後面還有什麼好的例子,且聽下回分解。