1.文件搜索locate
Linux locate命令用于查找符合条件的文档,它会去保存文档和目录名称的数据库mlocate内,查找合乎范本样式条件的文档或目录。一般情况我们只需要输入查找指定文件名字就可以。(locate只能搜索文件名)
locate命令和find -name功能差不多,但是比find搜索要快。因为find命令查找的是具体目录文件,而locate搜索的是一个数据库/var/lib/mlocate/mlocate.db
,这个数据库中存有本地所有的文件信息,该数据库是Linux自动创建并每天自动更新维护。相关的配置信息在/etx/updatedb.conf,
定时任务信息在/etc/cron.daily/mlocate
。
但对于刚建立的文件,使用该命令进行查找将会搜索不到所创建的文件,如果想使刚创建的文件被locate命令搜索到,可以使用updatedb
命令,更新mlocate
数据库,之后在使用locate
命令才能搜索到,否则要等到第二天才能搜索到该文件,该后台数据库默认一天更新一次。
命令格式:
locate 参数 文件名
命令参数:
- -e 将排除在寻找的范围之外。
- -1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
- -f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
- -q 安静模式,不会显示任何错误讯息。
- -n 至多显示 n个输出。
- -r 使用正规运算式 做寻找的条件。
- -o 指定资料库存的名称。
- d 指定资料库的路径
- -h 显示辅助讯息
- -V 显示程式的版本讯息
举例:
查找指定文件名字:locate 文件名
查找和pwd相关的所有文件,只显示5条数目
搜索etc目录下所有以sh开头的文件
忽略大小写
locate -i 文件名
更新数据库
updatedb
2.文件名搜索find命令
语法格式:
find path -option [ -print ] [ -exec -ok command ] {} \;
常用参数:
- -name filename #查找名为filename的文件
- -perm #按执行权限来查找
- -user username #按文件属主来查找
- -group groupname #按组来查找
- -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
- -atime -n +n #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
- -ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
- -nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
- -nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
- -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
- -size n[c] #查长度为n块[或n字节]的文件
- -mount #查文件时不跨越文件系统mount点
- -follow #如果遇到符号链接文件,就跟踪链接所指的文件
- -prune #忽略某个目录
举例:
查找某一个文件
一般使用find命令搜索文件名时,可以使用通配符匹配(通配符是完全匹配)。
- 表示匹配任意内容;
- ? 表示匹配任意一个字符;
- [] 表示匹配任意一个中括号内的字符;
find / -name 文件名
查找以cu 开头的文件
find ./ -name "cu*"
查找文件不区分大小写
find /root -iname 文件名
查找 目录下文件类型是目录 (f表示文件,d表示目录,l表示软链接)
find /home -type d
在 /etc 目录下查找5 分钟内被修改过属性的文件和目录
find /etc -cmin -5
查大于512k的文件
find /home -size +512k
查小于512k的文件
find /home -size -512k
在根目录下查找大于 100M 的文件(+n 表示大于,-n 表示小于,n 表示等于)
1 数据块 == 512 字节 0.5KB,也就是1KB等于2数据块 100MB == 102400KB204800数据块
find / -size +204800
查硬连接数大于2的文件或目录
find /home -links +2
查权限为700的文件或目录
find /home -perm 0700
查找在系统中最后10分钟访问的文件
find / -amin -10
查找在系统中最后48小时访问的文件
find / -atime -2
查找在系统中为空的文件或者文件夹
find / -empty
查找在系统中最后5分钟里修改过的文件
find / -mmin -5
查找在系统中最后24小时里修改过的文件
find / -mtime -1
3.grep命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
格式:
grep [选项] [文件]
常用参数:
- -n:显示匹配行及 行号。
- -i 表示忽略大小写;
- -v 表示排除指定字符串;
- -b 表示将可执行文件(binary)当作文本文件(text)来搜索;
- -c 表示仅显示找到的行数;
- -v 表示反向选择—仅列出没有“关键词”的行;
- –color=auto :可以将找到的关键词部分加上颜色的显示。
- -A n:显示匹配到的字符串所在的行及其后n行,after
- -B n:显示匹配到的字符串所在的行及其前n行,before
- -C n:显示匹配到的字符串所在的行及其前后各n行,context
显示匹配行及 行号
仅显示找到的行数
显示所有以d开头的文件中包含 test的行
grep 'test' d*
在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件
grep 'test' *file
以递归的方式查找符合条件的文件
例如,查找指定目录/etc/acpi,及其子目录(如果存在子目录的话)下所有文件中包含字符串"update"的文件,并打印出该字符串所在行的内容,
grep -r update /etc/acpi
显示匹配到的字符串所在的行及其后n行
显示匹配到的字符串所在的行及其前n行
4.which 命令
which和whereis命令都是Linux操作系统下查找可执行文件路径的命令。
which 命令的原理:在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which 查找的可执行文件,必须是要在 PATH 下的可执行文件,而不能是没有加入 PATH 的可执行文件,即使他就是可执行文件,但是没有加入到系统搜索路径,他仍然无法被 which 发现。
5.whereis命令
Linux whereis命令用于查找文件。
该指令会在特定目录中查找符合条件的文件,可以用来查找二进制(命令)、源文件、man文件。与which不同的是这条命令可以是通过文件索引数据库而非PATH来查找的,所以查找的面比which要广,一般文件的定位需使用locate命令。
常用参数:
- -b 只查找二进制文件。
- -B<目录> 只在设置的目录下查找二进制文件。
- -f 不显示文件名前的路径名称。
- -m 只查找说明文件。
- -M<目录> 只在设置的目录下查找说明文件。
- -s 只查找原始代码文件。
- -S<目录> 只在设置的目录下查找原始代码文件。
- -u 查找不包含指定类型的文件。
举例:
使用指令"whereis"查看指令"bash"的位置,输入如下命令:
注意:以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。显示bash 命令的二进制程序
显示bash 命令的帮助文件