linux统计代码(linux统计一个文件有多少行)

大家好,今天小编来为大家解答linux统计代码这个问题,linux统计一个文件有多少行很多人还不知道,现在让我们一起来看看吧!

linux下如何统计一个目录下的文件个数以及代码总行数的命令

知道指定后缀名的文件总个数命令:

find.-name*.cpp| wc-l

知道一个目录下代码总行数以及单个文件行数:

find.-name*.h| xargs wc-l

linux统计文件夹中文件数目

第一种方法:

ls-l|grep“^-”|wc-l

ls-l长列表输出该目录下文件信息(注意这里的文件,不同于一般的文件,可能是目录、链接、设备文件等)。如果ls-lR|grep“^-”|wc-l则可以连子目录下的文件一起统计。

grep ^-这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d

wc-l统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。

第二种方法:

find./-type f|wc-l

由于默认find会去子目录查找,如果只想查找当前目录的文件用

需要说明的是第二种方法会比第一种方法快很多,尤其是也统计子目录时。

几个常用的Linux操作系统监控脚本代码

本文介绍了几个常用的Linux监控脚本,可以实现主机网卡流量、系统状况、主机磁盘空间、CPU和内存的使用情况等方面的自动监控与报警。根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。

最近时不时有互联网的朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能细化主机监控的全面性。

下面是我常用的几个主机监控的脚本,大家可以根据自己的情况再进行修改,希望能给大家一点帮助。

1、查看主机网卡流量

复制代码代码如下:

#!/bin/bash#network#Mike.Xu while:; do time='date+%m"-"%d""%k":"%M' day='date+%m"-"%d' rx_before='ifconfig eth0|sed-n"8"p|awk'{print$2}'|cut-c7-' tx_before='ifconfig eth0|sed-n"8"p|awk'{print$6}'|cut-c7-' sleep 2 rx_after='ifconfig eth0|sed-n"8"p|awk'{print$2}'|cut-c7-' tx_after='ifconfig eth0|sed-n"8"p|awk'{print$6}'|cut-c7-' rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx_before)/256] echo"$time Now_In_Speed:"$rx_result"kbps Now_OUt_Speed:"$tx_result"kbps" sleep 2 done

2、系统状况监控

复制代码代码如下:

#!/bin/sh#systemstat.sh#Mike.Xu IP=192.168.1.227 top-n 2| grep"Cpu"》./temp/cpu.txt free-m| grep"Mem"》./temp/mem.txt df-k| grep"sda1"》./temp/drive_sda1.txt#df-k| grep sda2》./temp/drive_sda2.txt df-k| grep"/mnt/storage_0"》./temp/mnt_storage_0.txt df-k| grep"/mnt/storage_pic"》./temp/mnt_storage_pic.txt time=`date+%m"."%d""%k":"%M` connect=`netstat-na| grep"219.238.148.30:80"| wc-l` echo"$time$connect"》./temp/connect_count.txt

3、监控主机的磁盘空间,当使用空间超过90%就通过发mail来发警告

复制代码代码如下:

#!/bin/bash#monitor available disk space SPACE='df| sed-n'//$/ p'| gawk'{print$5}'| sed's/%//' if [$SPACE-ge 90 ] then fty89@163.com fi

4、监控CPU和内存的使用情况

复制代码代码如下:

#!/bin/bash#script to capture system statistics OUTFILE=/home/xu/capstats.csv

  DATE='date+%m/%d/%Y'

  TIME='date+%k:%m:%s'

  TIMEOUT='uptime'

  VMOUT='vmstat 1 2'

  USERS='echo$TIMEOUT| gawk'{print$4}''

  LOAD='echo$TIMEOUT| gawk'{print$9}'| sed"s/,//''

  FREE='echo$VMOUT| sed-n'/[0-9]/p'| sed-n'2p'| gawk'{print$4}''

  IDLE='echo$VMOUT| sed-n'/[0-9]/p'| sed-n'2p'|gawk'{print$15}''

  echo"$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE"》$OUTFILE

5、全方位监控主机

复制代码代码如下:

#!/bin/bash# check_xu.sh# 0****/home/check_xu.sh DAT="`date+%Y%m%d`" HOUR="`date+%H`" DIR="/home/oslog/host_${DAT}/${HOUR}" DELAY=60 COUNT=60# whether the responsible directory exist if! test-d${DIR} then/bin/mkdir-p${DIR} fi# general check export TERM=linux/usr/bin/top-b-d${DELAY}-n${COUNT}${DIR}/top_${DAT}.log 21# cpu check/usr/bin/sar-u${DELAY}${COUNT}${DIR}/cpu_${DAT}.log 21#/usr/bin/mpstat-P 0${DELAY}${COUNT}${DIR}/cpu_0_${DAT}.log 21#/usr/bin/mpstat-P 1${DELAY}${COUNT}${DIR}/cpu_1_${DAT}.log 21# memory check/usr/bin/vmstat${DELAY}${COUNT}${DIR}/vmstat_${DAT}.log 21# I/O check/usr/bin/iostat${DELAY}${COUNT}${DIR}/iostat_${DAT}.log 21# network check/usr/bin/sar-n DEV${DELAY}${COUNT}${DIR}/net_${DAT}.log 21#/usr/bin/sar-n EDEV${DELAY}${COUNT}${DIR}/net_edev_${DAT}.log 21

放在crontab里每小时自动执行:

0****/home/check_xu.sh

这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络,IO的统计数据。

如果某个时间段产生问题了,就可以去看对应的日志信息,看看当时的主机性能如何。

在Linux的命令行中实现字符出现频率统计的方法

Linux命令行有很多的乐趣,我们可以很容易并且完善地执行很多繁琐的任务。比如,我们计算一个文本文件中字和字符的出现频率,这就是我们打算在这篇文章中讲到的。

立刻来到我们脑海的命令,计算字和字符在一个文本文件中出现频率的 Linux命令是 wc命令。

在使用的脚本来分析文本文件之前,我们必须有一个文本文件。为了保持一致性,我们将创建一个文本文件,man命令的输出如下所述。

复制代码代码如下:$ man man> man.txt

以上命令是将man命令的使用方式导入到man.txt文件里。

我们希望能得到最平常的单词,对之前我们新建的文件执行如下脚本。

复制代码代码如下:$ cat man.txt| tr'''\012'| tr'[:upper:]''[:lower:]'| tr-d'[:punct:]'| grep-v'[^a-z]'| sort| uniq-c| sort-rn| head

Sample Output

复制代码代码如下:7557

262 the

163 to

112 is

112 a

78 of

78 manual

76 and

64 if

63 be

上面的脚本,输出了最常使用的十个单词。

如何看单个的字母呢?那就用如下的命令。

复制代码代码如下:$ echo'tecmint team'| fold-w1

Sample Output

[code] t

e

c

m

i

n

t

t

e

a

m

注:-w1只是设定了长度

现在我们将从那个文本文件中掰下来的每一个字母,对结果进行排序,得到所需的输出频率的十个最常见的字符。

$ fold-w1< man.txt| sort| uniq-c| sort-rn| head

Sample Output

复制代码代码如下:8579

2413 e

1987 a

1875 t

1644 i

1553 n

1522 o

1514 s

1224 r

1021 l

如何区分大小写呢?之前我们都是忽略大小写的。所以,用如下命令。

$ fold-w1< man.txt| sort| tr'[:lower:]''[:upper:]'| uniq-c| sort-rn| head-20

Sample Output

复制代码代码如下:11636

2504 E

2079 A

2005 T

1729 I

1645 N

1632 S

1580 o

1269 R

1055 L

836 H

791 P

766 D

753 C

725 M

690 U

605 F

504 G

352 Y

344.

请检查上面的输出,标点符号居然包括在内。让我们干掉他,用tr命令。GO:

复制代码代码如下:$ fold-w1< man.txt| tr'[:lower:]''[:upper:]'| sort| tr-d'[:punct:]'| uniq-c| sort-rn| head-20

Sample Output

复制代码代码如下:11636

2504 E

2079 A

2005 T

1729 I

1645 N

1632 S

1580 O

1550

1269 R

1055 L

836 H

791 P

766 D

753 C

725 M

690 U

605 F

504 G

352 Y

现在,我们有了三个文本,那就让我们用如下命令查看结果吧。

复制代码代码如下:$ cat*.txt| fold-w1| tr'[:lower:]''[:upper:]'| sort| tr-d'[:punct:]'| uniq-c| sort-rn| head-8

Sample Output

复制代码代码如下:11636

2504 E

2079 A

2005 T

1729 I

1645 N

1632 S

1580 O

下一步我们将会生成那些罕见的至少十个字母长的单词。以下是简单的脚本:

复制代码代码如下:$ cat man.txt| tr'''\012'| tr'[:upper:]''[:lower:]'| tr-d'[:punct:]'| tr-d'[0-9]'| sort| uniq-c| sort-n| grep-E'..................'| head

Sample Output

复制代码代码如下:1──────────────────────────────────────────

1 a all

1 abc any or all arguments within are optional

1 able see setlocale for precise details

1 ab options delimited by cannot be used together

1 achieved by using the less environment variable

1 a child process returned a nonzero exit status

1 act as if this option was supplied using the name as a filename

1 activate local mode format and display local manual files

1 acute accent

注:上面的.越来越多,其实,我们可以使用.{10}得到同样的效果。

这些简单的脚本,让我们知道最频繁出现的单词和英语中的字符。

现在结束了。下次我会在这里讲到另一个有趣的话题,你应该会喜欢读。还有别忘了向我们提供您的宝贵意见。

阅读剩余
THE END