Linux常用命令之文件搜索命令

1、常用搜索-find

命令 find
英文原意 find
所在路径 /bin/find
执行权限 所有用户
功能描述 文件搜索
语法 find [搜索范围] [搜索条件] (默认准确搜索)
范例 find /etc -name init??

常用的搜索条件的选项包括:

  • -name:按照文件名进行匹配查找,例:find /etc -name init
  • -iname(ignore name):与-name类似,但不区分大小写,例:find /etc -iname *INIT*
  • -type:按照文件类型进行匹配查找,例:find /etc -type d
  • -size:按照文件大小进行匹配查找,例:find / -size +204800
  • -user:按照所有者进行匹配查找,例:find /home -user zhenghaojie
  • -group:按照所属组进行匹配查找,例:find /home -group zhenghaojie
  • -mtime:按照文件修改时间进行匹配查找,例:find /etc mtime -30
  • -amin:按照访问时间(access)是否被修改进行匹配查找,例:find /etc -amin -30
  • -cmin:按照文件属性(change)是否被修改进行匹配查找,例:find /etc -cmin -30
  • -mmin:按照文件内容(modify)是否被修改进行匹配查找,例:find /etc -mmin -30
  • -inum:按照inode编号进行匹配查找,例:find /tmp -inum 506

注:
*:作为通配符使用,用于代表零个或多个字符;
?:表示匹配一个任意单个字符的通配符;

复杂命令:

  1. 使用-a(and),同时满足两个条件,例:find /etc -name *init* -a -type l
  2. 使用-o(or),两个条件满足任意一个即可,例:find /etc -name *init* -o -type l
  3. 使用-exec/-ok 命令 {} \;,对搜索结果执行操作,例:find /etc -name init* -exec ls -l {} \;
  4. 通过inode编号删除特殊文件,find /tmp -inum 506 -exec rm {} \;

在上述的3中,命令最后以“;”结束。{}表示find查找的结果,\表示转义符。-ok会进行询问是否进行该操作,-exec直接执行不询问,所以查找删除是多用-ok。

2、快速搜索-locate

命令 locate
英文原意 locate
所在路径 /usr/bin/locate
执行权限 所有用户
功能描述 在文件资料库中查找文件
语法 locate [选项] [文件名]
选项 -i(ignore):忽略大小写;-r(regular):使用正则表达式进行匹配
范例 locate inittab

注:
1、locate命令搜索速度很快,它是先对所有文件创建了文件数据库,在数据库中进行搜索而不是在硬盘中。因此对新建立的文件,由于文件数据库还没有,所以查找不到,我们可以使用: updatedb命令手动更新文件数据库,新建立的文件就可以查找到了。

2、如果是在/tmp临时文件中新建的文件,即使手动更新也无法查找,因为临时目录不在文件数据库的存储范围内。

3、命令搜索-which与whereis

命令 which
英文原意 which
所在路径 /usr/bin/which
执行权限 所有用户
功能描述 搜索命令所在目录及别名
语法 which [命令]
范例 which cp
命令 whereis
英文原意 where is
所在路径 /usr/bin/whereis
执行权限 所有用户
功能描述 搜索命令所在目录和帮助文档路径
语法 whereis [命令]
范例 whereis cp

注:上述两个命令都是针对命令的搜索,不同点在于whereis不仅可以搜索出命令的路径还可以搜索出命令的帮助文档路径。

4、文本搜索grep

命令 grep
英文原意 grep
所在路径 /bin/grep
执行权限 所有用户
功能描述 一个文本搜索命令,它通过字符串或正则表达式匹配来搜索文件中的指定字符串。
语法 grep [选项] [模式] [文件名]
选项 -i(ignore):忽略大小写;-n(number):显示行号;-r(recursion):递归搜索指定文件夹下的所有文件;-v(invert match):排除指定字串
范例 grep -i multiuser /etc/inittab

注:模式表示要搜索的模式,可以是字符串或正则表达式。

复杂命令:
去掉某个文件的注释行输出,例:grep -v ^# /tmp/issue.soft
该命令中,#是注释语句的意思,^表示开头的意思。

你可能感兴趣的:(Linux,linux,服务器,运维)