grep命令
grep:在文件正文中查找指定的字符串
语法:grep[参数] 查找模式 文件名[文件名]
grep命令用于在指定文件中查找与模式匹配的行,并将匹配的行显示在标准输出上。如果没有指定文件,则从标准输出中读取。当在多个文件中进行查找时,将在每行输出之前加上文件名。在搜索的文件中允许使用通配符
参数:
-c:只显示匹配行的行数
-i:匹配时不区分大小写,默认情况下匹配时区分大小写
-h:在多个文件中查找时,输出行前不显示文件名
-n:在输出前加上匹配串所在行的行号(文件首行行号为1)
-v:只显示不包含匹配串的行
-f filename:从指定文件中获取搜索模式,每行一个搜索模式项
例如:
在当前目录下的所有C文件中查找printf字符串
[root@localhost user1]#grep printf.c
将系统帐号文件中包含user1的行显示出来
[root@localhost user1]#grep /etc/passwd
当搜索模式中包含空格时,要把搜索模式用单引号括起来
例如:[root@localhost user]#cat>dialog
Your name is:
Linux
<ctrl+d>
[root@localhost user1]#grep ‘your name’dialog
Your name is:
在有多个搜索模式时,可以将这些搜索模式写入文件中,利
用-f参数从文件中读取搜索模式项。例如:
[root@localhost user1]#cat>mode.txt
name
lin*
<ctrl+d>
[root@localhost user1]#grep –f mode.txt dialog
Your name is:
Linux
find命令
find:查找文件
语法:find 搜索路径 匹配表达式
该命令用于在指定路径中查找符合条件的文件,搜索路径可
以是多个目录,不同目录之间用空格分割
(1)匹配表达式1
-name filename:要查找的文件名。可以使用通配符
“*”、“?”,但要用双引号将文件名引起来。
-user username:查找属于username用户的文件
-group groupname:查找属于groupname组的文件
-print:显示找到的文件路径名。
例如:
在当前目录下查找以h开头的文件
[root@localhost tmp]#find .-name “h*” –print
在整个文件系统中查找名为hosts的文件。
[root@localhost tmp]#find /-name hosts –print
(2)匹配表达式2
-exec 命令{}:对找到的匹配文件,执行所列出的命
令,而不询问用户是否执行这些命令,参数{}由find
到当前的文件路径名取代,命令行末尾必须有“\;”。
-ok 命令{}:与-exec的用法相同,在执行命令前询问
用户是否要执行命令。
例如:找出/home下属与用户user1的所有文件并显示其内
容。
[root@localhost tmp]#find /home –user1 –execcat{}\;|more
(3)匹配表达式3
-atime n:查找前n天访问过的文件(仅n天这一天)。
-atime +n:查找n天之前访问过的文件;-n则表示前
n天之后。
例如:
找出用户一年前访问过的文件
[root@localhost tmp]#find /home –atime +365 –print
找出用户user1主目录下属于自己的前3天以后访问过
(3天以来没有用过)的文件并删除
[root@localhost tmp]#find $HOME –user user1 –atime
+3 –exec rm –r {};\
(4)匹配表达式4
-type filetype:指定查找的文件类型
Fletype可以是:b块文件;c字符设备文件;d目录
文件;f一般文件;l符号连接文件。
例如:
在当前目录下查找所有子目录
[root@localhost tmp]#find .-type d –print
在当前目录下查找所有普通文件
[root@localhost tmp]#find .-type f –print
(5)匹配表达式5
-size Number和Numberc:按照文件大小进行查找。
Number表示以字节为单位,否则以块(一般是512字节)
为单位。-Number(或—Numberc)表式查找比该值小的文
件,+Number(或+Numberc)表示查找该值大的文件。
例如:
在当前目录下查找所有长度小于10块的文件
[root@localhost tmp]#find .size -10 –print
在当前目录下查找所有长度小于10字节的文件并以长格式
显示文件信息。
[root@localhost tmp]#find .-size -10c –print|ls –l
在当前目录下查找100~200块长的文件并显示文件的实际
块数。