歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> Linux shell編程----利用shell腳本遍歷某個目錄下的所有文件

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

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