shell命令檔案統計
阿新 • • 發佈:2018-12-18
資料夾與檔案個數
統計當前目錄下的資料夾數量:ls -l | grep "^d" | wc -l
統計當前目錄下的檔案數量:ls -l | grep "^-" | wc -l
遞迴統計當前目錄下子資料夾數量:ls -lR | grep "^d" | wc -l
遞迴統計當前目錄下子檔案數量:ls -lR | grep "^-" | wc -l
sszxr:src sszxr$ ls -l | grep "^d" | wc -l
44
sszxr:src sszxr$ ls -l | grep "^-" | wc -l
22
sszxr:src sszxr$ ls -lR | grep "^-" | wc -l
5655
sszxr:src sszxr$ ls -lR | grep "^d" | wc -l
701
sszxr:src sszxr$
統計檔案行數
sszxr:Desktop sszxr$ sed -n '$=' src.txt
66
sszxr:Desktop sszxr$ cat src.txt | wc -l
66
sszxr:Desktop sszxr$ awk 'END{print NR}' src.txt
66
sszxr:Desktop sszxr$ wc -l src.txt
66 src. txt
sszxr:Desktop sszxr$
遞迴統計當前資料夾下所有go檔案的行數
sszxr:blog sszxr$ wc -l `find . -name '*.go'`
10 ./gocode/userinfo.go
11 ./gocode/publish.go
99 ./main.go
35 ./sql/querydata.go
41 ./sql/datasave.go
196 total
sszxr:blog sszxr$
// 只打印最後一行
sszxr:blog sszxr$ wc -l `find . -name '*.go'` | grep 'total'
196 total
sszxr:blog sszxr$
sszxr:blog sszxr$ wc -l `find . -name '*.go'` | grep 'total' | awk '{print $1}'
196
sszxr:blog sszxr$
// 第二種方法
sszxr:blog sszxr$ find . -name '*.go' | xargs wc -l | grep 'total' | awk '{print $1}'
196
sszxr:blog sszxr$
//統計不包含空格的行
sszxr:blog sszxr$ find . -name '*.go' | xargs cat | grep -v ^$|wc -l
164
sszxr:blog sszxr$
grep搜尋命令中-v
表示取反,^&
表示匹配空白行。
xargs cat
表示一次性開啟所有檔案。