Linux系统下指令与文件的搜寻

在Linux系统中我们要找到某些文件,可以使用如下几个命令方便的找到:which,whereis,locate,find, 下面分别介绍各个命令不同的用法.    

1. which

用于搜寻可执行文件,这个命令是在PATH路径下进行查找.

例子🌰:

  • 如:输入which ifconfig会返回/sbin/ifconfig;

使用which进行搜索文件需要写出完整的文件名.

 

2.whereis

上面的which是查找指令文件名,而whereis是查找文件文件名.并且也是在特定的目录中去查找.

后面可以加如下选项和参数:

-l: 可以列出whereis会去查询的几个主要目录而已;

-b:只找binary格式的文件;

-m:只找在说明文档manual路径下的文件;

-s:只找source来源文件;

-u:搜寻不在上述三个项目当中的其他特殊文件

例子🌰:

  1. 找出ifconfig这个文件名:
    • whereis ifconfig  
    • 返回:ifconfig:/sbin/config   usr/share/man/man8/ifconfig.8.gz
  2. 找出passwd有关的“说明文档”文件名
    • whereis -m passwd  
    • 返回: passwd: /usr/share/man/man1/passwd.1.gz  /usr/share/man/man5/passwd.5.gz   如果不加-m的话会将有passwd文件名的都列出来.    

whereis查找的速率也是比较快的,这是因为它只会查找几个特定的目录而已,主要是针对/bin/sbin下面的可执行文件,以及/usr/share/man下面的man page文件.

要想具体制度whereis 查找了多少目录,可以使用whereis -l 来查看.

3. locate/updatedb

相比较前面两个命令,locate的使用更简单,功能也更为强大一些,它可以只输入部分文件名就能够进行查找.

其后面可以加单选项和参数如下:

-i:忽略大小写的差异;

-c:不输出文件名,仅计算找到的文件数量;

-l:仅输出几行的信息,如列出五行则人-l 5

-s:输出locate所使用的数据库文件的相关信息,包括该数据库纪录的文件/目录数量等;

-r:后面可接正则表达式的显示方式

例子🌰:

找出系统中所有与passwd 相关的文件名,且只列出2个

locate -l 2 passwd

返回:

/etc/passwd

/etc/passwd-

 

locate查找数据的时候很快,这是因为它查找的数据是存放在已创建的数据库/var/lib/mlocate/里,它只会在这里搜寻.

而数据库默认是每天更新一次的,所以如果搜索的数据在这个数据库中还没有更新就搜索不到.    不过可以手动刷新数据库,方法是

输入updatedb即可,update指令会去读区/etc/updatedb.conf这个配置文件的设置,然后再去硬盘中进行文件名搜索的动作,最后就更新数据库文件了. 因为会搜索硬盘,

所以输入updatedb后需要等待数分钟.

 

4.find

find是很强大的搜索指令,但是时间花费的比较多,因为它是直接去硬盘中进行搜索,如果硬盘比较老旧性能不高的话,耗费的时间就更久了!

使用方法如下:

find [path] [option] [action]

相关参数有与时间有关的,还有与使用者或者群组有关的.

例子🌰:

find /var -mtime -4

作用: 列出/var目录 4天内被改动过的文件名称,如果是+4则是4天前,4是代表4-5天那1天的文件

 

find /home -user wnnn

找到使用者 wnnn的文件

find / nouser  

搜寻系统中不属于任何人的文件.

 

posted @ 2021-11-12 16:08  小太阳。。。  阅读(191)  评论(0编辑  收藏  举报