通常利用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
转载 http://cicikasa.blog.163.com/blog/static/13757535520101264115249/
在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
转载 http://cicikasa.blog.163.com/blog/static/13757535520101264115249/