《linux就该这么学》笔记(7)
基于关键词在文本文件中搜索相匹配的信息或者在整个文件系统中基于指定的名称或属性搜索特定文件,这是我们在windows系统中常需要使用的操作,那么在linux中应该如何操作呢?
grep
grep命令用于在文本中执行关键词搜索,并显示匹配的结果。它是用途最广发的文本搜索匹配工具,虽然有很多参数,但大多数基本用不到。 grep最常用的两个参数:
- -n, 用来显示搜索到信息的行号
- -v, 参数用于反选信息(没有关键词的其余信息行)
grep [参数] [文件]
举例: 在linux中,/etc/passwd文件是保存着所有的用户信息,而一旦用户的登录终端被设置成/sbin/nologin, 则不允许登录系统,因此可以使用grep来查找当前系统中不运行登录的用户:
[root@linuxpronbe home]# grep /sbin/nologin /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
find
find命令用于按照指定条件来查找文件, 常言道:“linux系统中一切都是文件”, 搜索文件的工作一般都是通过find完成的,它可以使用不同的文件特征作为寻找条件,文件名、大小、修改时间、权限等等,一旦匹配成功则默认将信息显示在屏幕上。
find [路径] 寻找条件 操作
以下是find的参数:
参数 | 作用 |
---|---|
-name | 匹配名称 |
-prem | 匹配权限,mode为完全匹配,-mode为包含即可 |
-user | 匹配所有者 |
-group | 匹配所有组 |
-mtime -n +n | modification time 匹配修改内容的时间 |
-atime | last accessed time 匹配访问内容的时间 |
-ctime | file status change time 匹配修改文件权限的时间 |
-nouser | 匹配无所有者的文件 |
-nogroup | 匹配无所有组的文件 |
-newer f1 !f2 | 匹配比f1新但比f2旧的文件 |
–type b/d/c/p/l/f | 匹配文件类型 |
–size | 匹配文件大小 |
-prune | 忽略某个目录 |
-exec | 后面跟进一步处理搜索结果的命令 |
-exec命令的作用十分类似管道符, find 命令允许基于搜索结果来执行操作有以下几种:
操作 | 描述 |
---|---|
-delete | 删除当前匹配的文件 |
-ls | 执行ls命令 |
匹配结果标注化输出 | |
-quit | 一旦找到一个退出 |
根据文件系统层次标准(Filesystem Hierarchy Standard)协议,linux系统中配置文件会保存到/etc目录中, 如果想要获得该目录中以host开头的文件列表,可以执行如下命令:
[root@linuxpronbe home]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname
这里需配合正则使用。