linux · 2020-12-17 0

Linux查找命令

一、find

1.命令

find path_name option file_name [-exec | -ok command {} ;]

在path_name下查找file_name文件和目录

参数

  • name name : 文件名称符合 name 的文件
  • iname name : 文件名称符合 name 的文件,忽略大小写
  • type c : 文件类型是 c 的文件(文件类型有:普通文件f,目录d,符号链接 l,字符设备c,块设备b,套接字s,FIFO-p)
  • perm n : 权限是n的文件,参数为文件对应的权限码
  • maxdepth n : 限制遍历的目录最大深度
  • mindefth n : 限制遍历的目录最小深度
  • size n : 文件大小 是 n 单位(b:块, c:字节, w:字, k:千字节, M:兆字节, G:吉字节)
  • amin n : 在过去 n 分钟内被读取过
  • atime n : 在过去n天内被读取过的文件
  • cmin n : 在过去 n 分钟内被修改过
  • ctime n : 在过去n天内被修改过的文件
  • exec command {} : 执行命令,注意以";"结尾,{}表示前面find查找出来的文件名
  • ok command {} : 执行命令,表示执行命令前进行询问

2.栗子

find . -name t.txt # 在当前目录查找文件名为t.txt的文件
find . -name "*.txt" # 后缀为 .txt 的文件列出来:
find . -size +30c -name t.txt    # 在当前目录查找文件大小大于30个字节的文件名为t.txt的文件
find . -name t.txt -exec ls -lh {} ;    # 在当前目录查找文件名文t.txt的文件,并执行ls -lh命令

二、locate

locate 与 find 不同: find 是去硬盘找文件,locate 只在/var/lib/mlocate/mlocate.db资料库中找

locate option file_name
  • i : 忽略大小写
  • c : 不输出文件名,仅计算找到的文件数量
  • l : 仅输出几行的意思,例如输出5行则是-l 5
  • r : 后面可接正则表达式的显示方式

locate搜索的是一个数据库默认情况下 updatedb 每天执行一次,可以手动执行updatedb命令

updatedb

三、grep

1.命令

grep option pattern file_name
  • i : 忽略大小写(ignore case)
  • v : 反过来(invert),只打印没有匹配的,而匹配的反而不打印
  • n : 显示行号
  • w : 被匹配的文本只能是单词,而不能是单词中的某一部分
  • c : 显示总共有多少行被匹配到了,而不是显示被匹配到的内容
  • o : 只显示被模式匹配到的字符串
  • -A 5 可以显示匹配内容以及后面的5行内容
  • -B 5 可以显示匹配内容以及前面的5行内容
  • -C 5 可以显示匹配内容以及前后面的5行内容

2.栗子

grep Hello -w t.txt    # 在t.txt文件查找包含Hello单词的行,打印出来