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:搜寻不在上述三个项目当中的其他特殊文件
例子🌰:
- 找出ifconfig这个文件名:
- whereis ifconfig
- 返回:ifconfig:/sbin/config usr/share/man/man8/ifconfig.8.gz
- 找出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
搜寻系统中不属于任何人的文件.