首页 > 编程知识 正文

linux常用查询日志命令,linux常用查询命令全集

时间:2023-05-06 03:06:21 阅读:205909 作者:2944

grep命令&find命令 1.说明:

grep命令是Linux系统中的文本搜索工具,可以使用正则表达式搜索,也可以指定搜索结果的行数内容。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

2.区别:

(1) find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。
(2) grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。

3. grep语法

grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][–help][范本样式][文件或目录…]

4.grep参数:

-a 或 --text : 不要忽略二进制的数据。

-A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。

-b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。

-B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。

-c 或 --count : 计算符合样式的列数。

-C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。

-d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。

-e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。

-E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。

-f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。

-F 或 --fixed-regexp : 将样式视为固定字符串的列表。

-G 或 --basic-regexp : 将样式视为普通的表示法来使用。

-h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。

-H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。

-i 或 --ignore-case : 忽略字符大小写的差别。

-l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。

-L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。

-n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。

-o 或 --only-matching : 只显示匹配PATTERN 部分。

-q 或 --quiet或–silent : 不显示任何信息。

-r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。

-s 或 --no-messages : 不显示错误信息。

-v 或 --invert-match : 显示不包含匹配文本的所有行。

-V 或 --version : 显示版本信息。

-w 或 --word-regexp : 只显示全字符合的列。

-x --line-regexp : 只显示全列符合的列。

-y : 此参数的效果和指定"-i"参数相同。

4.1 pattern正则表达式主要参数:

: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

<:从匹配正则表达 式的行开始。

>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

.:所有的单个字符。

*:所有字符,长度可以为0。

5.find命令语法

find path -option [ -print ] [ -exec -ok command ] {} ;
即 find (选项) (参数)
参数说明: find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

6.常用选项

-exec<执行命令>: 假设find指令的回传值为True,就执行该指令;
-ls: 假设find指令的回传值为True,就将文件或目录名称列出到标准输出;
-name<范本样式>: 指定字符串作为寻找文件或目录的范本样式;
-path<范本样式>: 指定字符串作为寻找目录的范本样式;
-size<文件大小>: 查找符合指定的文件大小的文件;
-type<文件类型>: 只寻找符合指定的文件类型的文件;

7.常用的参数

参数:起始目录–查找文件的起始目录
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件。
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
s: socket
-pid n : process id 是 n 的文件
你可以使用 ( ) 将运算式分隔,并使用下列运算。
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2

显示grep的版本号
输入命令:grep --version

显示 find 的版本号
输入命令:find --version

一、find命令查询文件

(1)按照文件名称查询
1.只知道文件名,根据文件名称查询
在当前目录下创建一个名为 findtest1.txt 的文件,
查询命令 find . -name ‘findtest1.txt’
注意:查询的是当前目录下及子文件夹中所有文件名是 findtest1.txt 的文件
./ 是默认的当前目录


2.文件名称带有指定的字符结尾
将目前目录及调皮的汉堡目录下所有文件后缀是 .txt 的文件列出来。
查询命令 find . -name ’.txt‘
注意:查询的是当前目录下及子文件夹中所有文件后缀是 .txt 的文件

3.在/test/movefile目录下查找文件find2.txt
find /test/movefile -name find2.txt
注意:这里显示的结果目录和当前目录不是同一个目录,是从根目录开始的全路径

4.使用通配符(0或者任意多个)。表示在/test/movefile目录下查找文件名中含有字符串‘find2’的文件

find /test/movefile -name '*find2*'

结果如下

5.将目前目录其其下子目录中所有一般文件列出
查询命令 find . -type f
注意:会将目录下的文件都列出来,如果文件过多,不建议使用

(2)按照文件特征查找
1.查找在/test/movedir3 目录中最后10分钟访问的文件(access time)
find /test/movedir3 -amin -10
注意:显示结果为最近10分钟访问的目录和文件
2.查找在/test/movedir3目录中最后48小时访问的文件
find /test/movedir3 -atime -2
注意:此命令慎用,会显示出48小时的所有操作,显示结果特别多

3.查找在 /test/movedir3中为空的文件或者文件夹
find /test/movedir3 -empty
注意:使用时要带上路径,否则按照根目录查询全部的文件

4.将目前目录及调皮的汉堡目录下所有最近 20 天内更新过的文件列出
输入命令 find . -ctime -20


5.查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们:

6.查找前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
find . -type f -perm 644 -exec ls -l {} ;


7.为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径:
find / -type f -size 0 -exec ls -l {} ;
命令慎用,查询结果过多

8.查找在系统中属于group为weblogic的所有文件
find / -group weblogic
注意:该命令显示的内容超多,慎用

9.查找在 /test/movedir3目录中最后5分钟里修改过的文件(modify time)
find /test/movedir3 -mmin -5
注意:显示的结果中有两个,一个是movefile1文件所在的目录,一个是修改的文件名称

下图是修改多个文件的结果

10.查找在/test/movedir3目录中最后24小时里修改过的文件
find /test/movedir3 -mtime -1


11.查找在系统中属于weblogic这个用户的文件
find / -user weblogic
注意:该命令显示的内容超多,慎用

12.查找出大于10字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)
find /test/movedir3 -size +10c

13.查找出小于1000KB的文件
find /test/movedir3 -size -1000k

(3)使用混合查找方式查找文件
参数有: !,-and(-a),-or(-o)。
1.在/test/movedir3 目录下查找大于10000字节并在4天前修改的文件
find /test/movedir3 -size +10c -and -mtime +4
注意: -mtime +3 与 -mtime -3 -mtime 3 的区别

find /test/movedir3 -mtime -4 查找文件更新日时在距现在时刻4天以内的文件
find /test/movedir3 -mtime +4 查找文件更新日时在距现在时刻5天以上的文件
find /test/movedir3 -mtime 4 查找文件更新日时在距现在时刻4天以上5天以内的文件
查询结果如下
可以看到 -4 在4天内有修改的文件
4 及 +4 无记录

14.在/目录下查找用户是test或者peopl的文件
find / -user test -or -user peopl

15.在/tmp目录中查找所有不属于panda用户的文件
find /tmp ! -user panda

二、grep命令查询内容

1.在当前目录中,查找后缀有 file1 字样的文件中包含 test 字符串的文件,并打印出该字符串的行
grep test *file1

2.以递归的方式查找符合条件的文件。例如,查找指定目录/test 及调皮的汉堡目录(如果存在子目录的话)下所有文件中包含字符串"test"的文件,并打印出该字符串所在行的内容
grep -r test /test

3.反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
查找文件名中包含 grep 的文件中不包含grep 的行

grep -v grep *movefile1*


4.如果文件过大无法直接查看,知道时间,可以根据时间搜索
grep -n ‘2019-10-24 00:01:11’ *
注意: * 是文件名

5.利用 grep 和 find 命令查找文件内容
grep “被查找的字符串” 文件名
grep ‘abc’ movefile1

6.从文件内容查找与正则表达式匹配的行:
grep –e “正则表达式” 文件名
grep -e ‘[a-z]’ movefile1

7.查找时不区分大小写
grep –i “被查找的字符串” 文件名
grep -i ‘CesHi’ movefile1

8.查找匹配的行数:
grep -c “被查找的字符串” 文件名
grep -c ‘ceshi’ movefile1
注意查询结果,结果是 1 代表在movefile1中存在ceshi这个字符串
如果没有,显示的结果是0

9.从文件内容查找不匹配指定字符串的行,和第三个一样
grep –v “被查找的字符串” 文件名

grep -v grep *movefile1*

10.从/test目录开始查找所有扩展名为file2 的文本文件,并找出包含 “123” 的行

find /test -type f -name "*file2" | xargs grep "123"

11.联合查询
从当前目录开始查找所有扩展名为 file2 的文本文件,并找出包含 “abc” 的行
find . -name “*file1” | xargs grep “abc”

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。