Linux命令------------查找(文件、文件中的关键字)

时间:2022-05-03 17:05:20


1、grep :查找文件中的内容

$ grep [option] pattern [file] 

例:

$ grep un day

Sunday 

 

:

grep include doulinked.c doulinked1.c 

doulinked.c:#include <stdio.h>

doulinked.c:#include <stdlib.h>

doulinked.c:#include <string.h>

doulinked1.c:#include <stdio.h>

doulinked1.c:#include <stdlib.h>

doulinked1.c:#include <string.h>

 

例:

$ grep -n 'typedef struct' doulinked.c

6:typedef struct Stu

注:中间包含空格的词需要加单引号;

-n --number 列出所找词所在行。

 

2、find:我的东西在哪(迅速在指定的范围内查找到文件)

$find [OPTION] [path...] [expression]

例:

$ find ~/ -name linked.c -print

/home/liyuru/Myc/Everyc/linked.c

/home/liyuru/Myc/ADT/linklis/linked.c

find: ‘/home/liyuru/.cache/dconf’: Permission denied

注:find 命令后面要紧跟查找范围,大到根目录,小到当前目录,都可以(可以是相对或绝对路径)。find 会深入到这个路径的每一个子目录中去寻找。

Permission denied:最后一行输出现了这两个词。这是因为普通用户并没有进入这两个目录的权限,这样find 在扫描时将跳过这个目录。

 

-print Linux命令------------查找(文件、文件中的关键字)

 

-name 后面跟着要查找的文件名。可以用通配符来指定文件名。

#此处拓展一下通配符

#“*” 用于匹配文件中任意长度的字符串,可以代表很复杂很长的字符串。

    例:*.cpp  *.c 

#“” “*”类似,但只匹配一个字符。

    例:$ ls queue.?

        queue.c

#“[]”用于匹配所有出现在方括号内的字符,一个文件只能匹配一个字符。

     例:$ ls text[1A]

         text1 textA

#“-” 来指定一个字符集范围,所有包含在上下界(可以是数字或字母)之间的字符都会被匹配。

     例:$ ls text[1-3]

         text1 text2 text3

    

-type选项的参数:

b :块设备文件                f:普通文件

c :字符设备文件              p:命名管道

d :目录文件                  l:符号链接

-atime n 用来查找最后一次使用n天前的文件(File  was last accessed n*24 hours ago).

-mtime n 用来查找最后一次修改n天前的文件.

#但是在实际使用过程中很少能准确确定n的大小,可以用+n表示大于n,用-n表示小于n

例:在/usr/bin/中查找最近100天内没有使用过的命令(也就是最后一次使用在100天或100天以前的命令)

$find /usr/bin/ type -f -atime +100 -print 

 

3、locate:更快速的定位文件(适合当用户完全不记得自己的文件放哪时)

$locate file 

例:

Linux命令------------查找(文件、文件中的关键字)

注:locate 命令自动建立整个文件名数据库,不需要用户插手。如果希望生成数据库文件的最新版本,可以使用updatedb命令,不过运行这个命令需要root权限,大概耗费1分钟。

 

4、whereis:查找特定程序

该命令主要用于查找程序文件,并提供这个文件的二进制可执行文件、源代码文件和使用手册页存放的位置。

例:


#-b 只查找这个程序的二进制可执行文件。

#如果如第三种情况返回空字符串,说明该命令无法找到文件。

#无法找到文件的原因有两个:

1、文件不存在

2、文件没有存在于任何whereis命令搜索的子目录中。Whereis命令检索的目录是固定编写在它的程序中的,这有缺陷,但大大提高了检索的速度。

 

最后附上关于如何查找命令的一些命令

1、man:这个是最基础的就不介绍了

2、whatis

例:$whatis uname 

uname (2)            - get name and information about current kernel

uname (1)            - print system information

注:whatis 从某个程序的使用手册中抽出一行简单的介绍性文字,帮助用户大致了解这个命令的用途。

3、apropos:与whatis命令相反

例:

Linux命令------------查找(文件、文件中的关键字)

注:该命令适合用户想用某个命令但想不起来时可以求助apropos。该命令通过使用手册中反查到某个命令。