1. 程式人生 > >shell命令檔案統計

shell命令檔案統計

資料夾與檔案個數

統計當前目錄下的資料夾數量: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表示一次性開啟所有檔案。