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

Linux shell編程----利用shell腳本遍歷某個目錄下的所有文件

Linux shell編程----利用shell腳本遍歷某個目錄下的所有文件    1 我們都知道shell腳本能夠做很多的事,今天剛好一個隊友要我寫個腳本求某個目錄下所有java文件的行數總和  2 ok,為了方便,我把這個目錄放到了當前的家目錄下,路徑為/home/chenguolin/src  3 我在家目錄下建了一個s.sh的腳本,代碼如下,等等來分析代碼的意思 [plain]  #!/bin/bash   function ergodic(){       for file in ` ls $1 `       do           if [ -d $1"/"$file ]           then                ergodic $1"/"$file           else                wc -L $1"/"$file | cut -d' ' -f1 >> /home/chenguolin/out           fi       done   }   INIT_PATH="/home/chenguolin/src"   ergodic $INIT_PATH    4 分析一下代碼的意思      1 第一行是一個常規的格式,我們要指定這個腳本是由bash來執行      2 第二行是一個腳本的函數      3 第三行是一個for循環,shell裡面把反引號裡面的命令認為是系統命令,那麼代碼的意思就是循環枚舉這個目錄下的文件,$1是指函數的第一個參數      4 第四行跳過,相信大家都懂      5 第五行是一個判斷語句,如果當前文件是一個目錄      6 if的結構then      7 遞歸執行這個函數,傳入當前目錄      8 如果文件不是目錄,那麼我們執行下一行      9 wc -L $1"/"$file 這個命令是求當前這個文件的行數,沒有包括空行         | cut -d' ' -f1  這個命令是管道的應用,通過前面得到的結果我們去重新定義cut的分割符為空格,並且只顯示第一列         >> /home/chenguolin/out      把前面得到的內容重定向到家目錄下的out文件      10 結束for循環      11 括號,呵呵呵      12 初始化要遍歷的目錄的路徑      13 函數調用並傳入這個路徑    5 執行     1 首先我們先給這個文件s.sh一個執行權限,先進入家目錄        cd ~        chmod u+x s.sh     2 執行文件         ./s.sh     3 得到out的內容(我們這邊要保證out在執行前是空的內容),可以利用cat來查看     4 我們得到的out內容                  5 那麼我們得到了每一個文件的行數,現在你是不是想直接手算了啊?       如果真這麼想那麼你就呵呵呵呵呵了       我們可以利用Python來求出這個文件的總和,我就在家目錄下建立一個p.py的Python文件      下面直接貼代碼了 [python]  #!/bin/python   sum = 0   while True:         try:            str = raw_input()         except:            break         num = int(str)         sum += num   print sum        6 進入到家目錄下直接利用重定向來運行p.py       python p.py < out
Copyright © Linux教程網 All Rights Reserved