今天突然想在linux 找个以前的软件,可是忘记在那个地方了,想查找一下竟然不知道linux的查找命令怎么用,唉,还是要总结一下子。
linux查找命令:find locate whereis which type
1.find 是最常见的命令,也是最强大的
find <指定目录> <指定条件> <指定动作>
指定目录 :所要搜索的目录及所有其子目录。默认当前目录
指定条件:所要搜索的文件的特征
指定动作:对搜索结果进行特定的处理
如果什么参数也不加,find默认搜索当前目录下及其子目录下,并且过滤任何结果,既返回所有结果在屏幕上
-mount, -xdev : 只检查和指定目录在同一个档案系统下的档案,避免列出其它档案系统中的档案
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比档案 file 更晚被读取过的档案
-atime n : 在过去 n 天过读取过的档案
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比档案 file 更新的档案
-ctime n : 在过去 n 天过修改过的档案
-empty : 空的档案-gid n or -group name : gid 是 n 或是 group 名称是 name
-ipath p, -path p : 路径名称符合 p 的档案,ipath 会忽略大小写
-name name, -iname name : 档案名称符合 name 的档案。iname 会忽略大小写
-size n : 档案大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 档案类型是 c 的档案。
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档案
l: 符号连结
s: socket
-pid n : process id 是 n 的档案
lg: find -name ‘my*’ 搜索当前目录下的,所有文件名以my开头的文件
find . -name 'my*' -ls 搜索当前目录中,所有文件以my开头的文件,并显示他们的祥细信息
find . -type f -mmin -10 搜索当前目录中,所有过去10分钟内更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录
详细语法参照:http://www.linuxsir.org/main/node/137
2,locate
locate 是find -name 的另一种泄愤,但要比后者快的多,原因是它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。linux系统自动创建的这个数据库,并且每天自动更细一次,所以使用locate查不到最近变动的过的文件。为了避免这种情况,可以在使用前locate,先使用updatedb命令,手动更新数据库。
lg:locate /etc/sh 搜索etc目录下的所有sh开头的文件
locate ~/m 搜索用户目录下,所有以m开头的文件。
locate -i ~/m 搜索用户目录下,所有以m开头的文件,并忽略大小写
名称:locate
使用权限:所有使用者
使用方式: locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
说明:
locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了。
在一般的 distribution 之中,数据库的建立都被放在 contab 中自动执行。一般使用者在使用时只要用
# locate your_file_name
的型式就可以了。 参数:
-u
-U
建立数据库,-u 会由根目录开始,-U 则可以指定开始的位置。
-e
将
排除在寻找的范围之外。
-l
如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
-f
将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在数据库中。
-q
安静模式,不会显示任何错误讯息。
-n
至多显示 个输出。
-r
使用正规运算式 做寻找的条件。
-o
指定数据库存的名称。
-d
指定数据库的路径
-h
显示辅助讯息
-v
显示更多的讯息
-V
显示程序的版本讯息 范例:
locate chdrv : 寻找所有叫 chdrv 的档案
locate -n 100 a.out : 寻找所有叫 a.out 的档案,但最多只显示 100 个
locate -u : 建立数据库
3, whereis whereis 命令只能用于程序名的搜索,而且只搜索二进制文件(canshu-b),man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回虽有信息
lg whereis grep
参 数:
-b 只查找二进制文件。
-B<目录> 只在设置的目录下查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M<目录> 只在设置的目录下查找说明文件。
-s 只查找原始代码文件。
-S<目录> 只在设置的目录下查找原始代码文件。
-u 查找不包含指定类型的文件。
4,which 在path变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
lg :which grep
参 数:
-n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
5,type 命令其实不能算是查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,先党羽which命令。
lg: type cd 系统会显示 cd是shell的自带命令(build-in)
type grep 提示为一个外部命令,并显示该命令的路径
type -p grep 加上-p参数后,相当于which命令。