参考资料:
[1]Linux中文件的五个查找命令总结
[2]type命令
[3]whereis命令
[4]linux下的locate命令的使用
在Windows下可以通过GUI界面直接输入一些关键字查找文件,那么Linux下如何查找某个文件?
- which:在环境变量中寻找系统命令的位置,返回第一个结果
- type:用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令
- whereis:程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)
- find:最常用和最强大的查找命令,可以用它找到任何想找的文件
- locate:相当于find -name,可快速查找文件
which查看环境变量中实际使用的命令位置
格式也相当简单:
which 你要查看的程序名称
假如我们要找的程序名称叫做python。
wodeMBP:~ wo$ which python
/anaconda3/bin/python
wodeMBP:~ wo$
这里我的电脑里面有python,所以他直接返回了一个路径。
如果查找一个不存在的程序名称:ppap
wodeMBP:~ wo$ which ppap
wodeMBP:~ wo$
ppap我这里环境中根本没有,所什么也没打印
type判断命令类型
命令的分类有很多种
命令类型 | 解释 |
---|---|
alias | 别名 |
keyword | 关键字,Shell保留字。 |
function | 函数,Shell函数。 |
builtin | 内建命令,Shell内建命令。 |
file | 文件,磁盘文件,外部命令。 |
unfound | 没有找到。 |
格式:
type 文件名
wodeMBP:~ wo$ type python
python is /anaconda3/bin/python
wodeMBP:~ wo$ type cd
cd is a shell builtin
wodeMBP:~ wo$ type if
if is a shell keyword
wodeMBP:~ wo$ type which
which is hashed (/usr/bin/which)
wodeMBP:~ wo$ type ppap
-bash: type: ppap: not found
whereis搜索二进制、man文档以及源代码
whereis和locate寻找的数据是由已创建的数据 /var/lib/ 中查找
wodeMBP:~ wo$ whereis python
/usr/bin/python
whereis和locate寻找的数据是由已创建的数据 /var/lib/ 中查找。但是数据库的更新默认是每天更新一次(不同系统可能会有差异),所以当新建文件或删除文件后去查找该文件,whereis和locate会告诉你文件“not found”,因为必须更新数据库了。
要手动更新数据库的方法也很简单,直接输入updatedb即可。updatedb命令回去读取/etc/updatedb.conf中的配置,然后去硬盘里面进行查找文件名操作,最后更新整个数据库文件。
find命令
格式
find [PATH] [option] [action]
例子:假如我的桌面上有一个文件叫做ppap的文件:
find / -name ppap
如果你不给定搜索路径,那么它默认是在当前目录下查找。举个例子:
sudo find / -iname "gdb-m*" # 大小写忽略,sudo避免权限问题
sudo find / -name "gdb-m*" # 考虑大小写
指定文件目录下递归查找:
wodeMBP:Desktop wo$ find ~/Desktop/ ppap
/Users/wo/Desktop/
/Users/wo/Desktop//.banana.swp
/Users/wo/Desktop//.DS_Store
/Users/wo/Desktop//.localized
/Users/wo/Desktop//apple.c
/Users/wo/Desktop//main.c
/Users/wo/Desktop//.cat.swp
/Users/wo/Desktop//main
/Users/wo/Desktop//.server.c.swp
/Users/wo/Desktop//ppap
/Users/wo/Desktop//.apple.swp
ppap
wodeMBP:Desktop wo$
很多乱七八糟的文件,但是还是找到了我们要的ppap,当然也可以指定搜索层级-Maxdepth classnum
locate命令
这是一种基于数据库检索的一种命令,比较快。但是要注意更新databd。
Mac下的这个总是有点不一样,这里我在ubuntu正常使用:
locate apple.c
/root/Desktop/apple.c
再提一点,locate选项中有一个 -r, 支持正则表达式搜索。举个例子
locate -r /*pie$ #查找以pie结尾的文件,使用之前注意更新updatedb