Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> Linux wc命令詳解

Linux wc命令詳解

日期:2017/2/7 14:35:55      編輯:Linux教程
 

通常利用Linux的wc命令和其他命令結合來計算行和其他信息。
在Linux下用wc進行計數。返回文件的行數、字數、字節數等。

看個例子:
wc wc1.txt
3 5 16 wc1.txt
輸出信息依次是:行數 字數 字節數 文件名稱。再具體點,單個統計。
wc -m filename:顯示一個文件的字符數
wc -l filename:顯示一個文件的行數
wc -L filename:顯示一個文件中的最長行的長度
wc -w filename:顯示一個文件的字數
需要留意的:貌似wc統計的行算是用換行符來確定的。就是說最後一行要有換行符,最後wc的行數才是正確的,否則將會少一行。
為了說明這個問題,看一個perl的測試:
perl -e 'print "a"'|wc
0 1 1
perl -e 'print "a\n"'|wc
1 1 2
上面的例子中print命令將a打印出來,如果不帶換行符\n,則認為這一行不存在。
有以下幾點說明:
1:一個漢字占三個字節(未經驗證,個人認為是兩個字節),一個回車符等不可見字符也占一個字節
2:一行的末尾如果沒有回車符,則不算是一行,也就是說,如果一個文件的最後一行末尾沒有換行符,wc命令統計的行數會比實際行數少一,所謂實際行數是你所看到的行數,實際上,沒有回車符,確實不能算作一行(注:若是在一個已存在的文本中,則默認為所有的行都有一個不可見的回車符)
3:所謂一個字就是連續的字符,即不被空字符分割的連續的字母或者漢字算作是一個字
例如下面是一個叫abc.txt的文本,利用vi打開後的情況:(為了明細起見我們把回車符用箭頭┘表示,實際中是沒有的)

You are nice.
Right??


OK.

~
~
~

You are nice.┘
Right??┘


OK.

~
~
~
則:
wc abc.txt
6 5 28 abc.txt
即6行,5個word,28個字符。我們來數一下。
包括看不見的回車符共有6行;
不被空字符分割的連續的字母共有5個,分別是You、are、nice.、Right??、OK.
字節(或字符)包含了回車符共28個。

舉例:
example1:linux下如何統計一個目錄下的文件個數以及代碼總行數的命令知道指定後綴名的文件總個數命令:
find . -name "*.cpp" | wc -l
知道一個目錄下代碼總行數以及單個文件行數:
find . -name "*.h" | xargs wc -l

example2:linux統計文件夾中文件數目

第一種方法:
ls -l|grep “^-”|wc -l

ls -l 長列表輸出該目錄下文件信息(注意這裡的文件,不同於一般的文件,可能是目錄、鏈接、設備文件等)。如果ls -lR|grep “^-”|wc-l則可以連子目錄下的文件一起統計。

grep ^- 這裡將長列表輸出信息過濾一部分,只保留一般文件,如果只保留目錄就是 ^d

wc -l 統計輸出信息的行數,因為已經過濾得只剩一般文件了,所以統計結果就是一般文件信息的行數,又由於一行信息對應一個文件,所以也就是文件的個數。

第二種方法:
find ./ -type f|wc -l

由於默認find會去子目錄查找,如果只想查找當前目錄的文件用find ./ -maxdepth 1 -type f|wc -l即可。

需要說明的是第二種方法會比第一種方法快很多,尤其是也統計子目錄時。
example3:想知道多少個用戶登錄了系統?
who | wc -l

Copyright © Windows教程網 All Rights Reserved