1. 程式人生 > >Linux程式設計(Linux shell程式設計的例子:批量處理檔案)

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.會被捨棄。該方法在提取檔名,或者檔案字尾時很有用。

各位看官們,今天的例子就到此為止,欲知後面還有什麼好的例子,且聽下回分解。