linux计算目录下wc,Linux wc命令详解
通常利用Linux的wc命令和其他命令結(jié)合來(lái)計(jì)算行和其他信息。
在Linux下用wc進(jìn)行計(jì)數(shù)。返回文件的行數(shù)、字?jǐn)?shù)、字節(jié)數(shù)等。
看個(gè)例子:
wc wc1.txt
3? 5 16 wc1.txt
輸出信息依次是:行數(shù) 字?jǐn)?shù) 字節(jié)數(shù) 文件名稱(chēng)。再具體點(diǎn),單個(gè)統(tǒng)計(jì)。
wc -m filename:顯示一個(gè)文件的字符數(shù)
wc -l filename:顯示一個(gè)文件的行數(shù)
wc -L filename:顯示一個(gè)文件中的最長(zhǎng)行的長(zhǎng)度
wc -w filename:顯示一個(gè)文件的字?jǐn)?shù)
需要留意的:貌似wc統(tǒng)計(jì)的行算是用換行符來(lái)確定的。就是說(shuō)最后一行要有換行符,最后wc的行數(shù)才是正確的,否則將會(huì)少一行。
為了說(shuō)明這個(gè)問(wèn)題,看一個(gè)perl的測(cè)試:
perl -e 'print "a"'|wc
0?????? 1?????? 1
perl -e 'print "a\n"'|wc
1?????? 1?????? 2
上面的例子中print命令將a打印出來(lái),如果不帶換行符\n,則認(rèn)為這一行不存在。
有以下幾點(diǎn)說(shuō)明:
1:一個(gè)漢字占三個(gè)字節(jié)(未經(jīng)驗(yàn)證,個(gè)人認(rèn)為是兩個(gè)字節(jié)),一個(gè)回車(chē)符等不可見(jiàn)字符也占一個(gè)字節(jié)
2:一行的末尾如果沒(méi)有回車(chē)符,則不算是一行,也就是說(shuō),如果一個(gè)文件的最后一行末尾沒(méi)有換行符,wc命令統(tǒng)計(jì)的行數(shù)會(huì)比實(shí)際行數(shù)少一,所謂實(shí)際行數(shù)是你所看到的行數(shù),實(shí)際上,沒(méi)有回車(chē)符,確實(shí)不能算作一行(注:若是在一個(gè)已存在的文本中,則默認(rèn)為所有的行都有一個(gè)不可見(jiàn)的回車(chē)符)? 3:所謂一個(gè)字就是連續(xù)的字符,即不被空字符分割的連續(xù)的字母或者漢字算作是一個(gè)字
例如下面是一個(gè)叫abc.txt的文本,利用vi打開(kāi)后的情況:(為了明細(xì)起見(jiàn)我們把回車(chē)符用箭頭┘表示,實(shí)際中是沒(méi)有的)
You are nice.
Right??
OK.
~
~
~
You are nice.┘
Right??┘
┘
┘
OK.
┘
~
~
~
則:
wc? abc.txt
6???? 5????? 28?? abc.txt
即6行,5個(gè)word,28個(gè)字符。我們來(lái)數(shù)一下。
包括看不見(jiàn)的回車(chē)符共有6行;
不被空字符分割的連續(xù)的字母共有5個(gè),分別是You、are、nice.、Right??、OK.
字節(jié)(或字符)包含了回車(chē)符共28個(gè)。
舉例:
example1:linux下如何統(tǒng)計(jì)一個(gè)目錄下的文件個(gè)數(shù)以及代碼總行數(shù)的命令知道指定后綴名的文件總個(gè)數(shù)命令:
find . -name "*.cpp" | wc -l
知道一個(gè)目錄下代碼總行數(shù)以及單個(gè)文件行數(shù):
find . -name "*.h" | xargs wc -l
example2:linux統(tǒng)計(jì)文件夾中文件數(shù)目
第一種方法:
ls -l|grep “^-”|wc -l
ls -l 長(zhǎng)列表輸出該目錄下文件信息(注意這里的文件,不同于一般的文件,可能是目錄、鏈接、設(shè)備文件等)。如果ls -lR|grep “^-”|wc-l則可以連子目錄下的文件一起統(tǒng)計(jì)。
grep ^- 這里將長(zhǎng)列表輸出信息過(guò)濾一部分,只保留一般文件,如果只保留目錄就是 ^d
wc -l 統(tǒng)計(jì)輸出信息的行數(shù),因?yàn)橐呀?jīng)過(guò)濾得只剩一般文件了,所以統(tǒng)計(jì)結(jié)果就是一般文件信息的行數(shù),又由于一行信息對(duì)應(yīng)一個(gè)文件,所以也就是文件的個(gè)數(shù)。
第二種方法:
find ./ -type f|wc -l
由于默認(rèn)find會(huì)去子目錄查找,如果只想查找當(dāng)前目錄的文件用find ./ -maxdepth 1 -type f|wc -l即可。
需要說(shuō)明的是第二種方法會(huì)比第一種方法快很多,尤其是也統(tǒng)計(jì)子目錄時(shí)。
example3:想知道多少個(gè)用戶(hù)登錄了系統(tǒng)?
who | wc -l
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的linux计算目录下wc,Linux wc命令详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java读取mysql配置文件_Linu
- 下一篇: linux系统生成的新文件是什么编码的,