每一种操作系统都是由成千上万个不同种类的文件所组成的。我们有时候忘记某份文件放在硬盘中的哪个地方,或者我们想快速的定位到某个文件。有时只隐约记得名字,或者一些文件相关的属性,比如修改文件时间,文件属性等,在windows下很方便的,直接搜索就可以了,
Linux下就需要一些命令实现,本文主要讲解五个linux查找命令:find、locate、whereis、which、type。
find命令用来在指定目录下查找文件。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。
-amin:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin:查找在指定时间之时被更改过的文件或目录;
-cnewer:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;
-exec:假设find指令的回传值为True,就执行该指令;
-false:将find指令的回传值皆设为False;
-fls:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;
-follow:排除符号连接;
-fprint:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;
-fprint0:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;
-fprintf:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;
-fstype:只寻找该文件系统类型下的文件或目录;
-gid:查找符合指定之群组识别码的文件或目录;
-group:查找符合指定之群组名称的文件或目录;
-help或——help:在线帮助;
-ilname:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;
-iname:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;
-inum:查找符合指定的inode编号的文件或目录;
-ipath:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;
-iregex:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;
-links:查找符合指定的硬连接数目的文件或目录;
-iname:指定字符串作为寻找符号连接的范本样式;
-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;
-maxdepth:设置最大目录层级;
-mindepth:设置最小目录层级;
-mmin:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;
-mount:此参数的效果和指定“-xdev”相同;
-mtime:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;
-name:指定字符串作为寻找文件或目录的范本样式;
-newer:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-nogroup:找出不属于本地主机群组识别码的文件或目录;
-noleaf:不去考虑目录至少需拥有两个硬连接存在;
-nouser:找出不属于本地主机用户识别码的文件或目录;
-ok:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;
-path:指定字符串作为寻找目录的范本样式;
-perm:查找符合指定的权限数值的文件或目录;
-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;
-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;
-printf:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;
-prune:不寻找字符串作为寻找文件或目录的范本样式;
-regex:指定字符串作为寻找文件或目录的范本样式;
-size:查找符合指定的文件大小的文件;
-true:将find指令的回传值皆设为True;
-typ:只寻找符合指定的文件类型的文件;
-uid:查找符合指定的用户识别码的文件或目录;
-used:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
-b, --basename 匹配唯一的路径名称的基本文件名
-c, --count 只显示找到条目的号码
-d, --database DBPATH 用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)
-e, --existing 只显示当前存在的文件条目
-L, --follow 当文件存在时跟随蔓延的符号链接 (默认)
-h, --help 显示本帮助
-i, --ignore-case 匹配模式时忽略大小写区别
-l, --limit, -n LIMIT 限制为 LIMIT项目的输出 (或 计数)
-m, --mmap 忽略向后兼容性
-P, --nofollow, -H 当检查文件时不跟随蔓延的符号链接
-0, --null 输出时以 NUL 分隔项目
-S, --statistics 不搜索项目,显示有关每个已用数据库的统计信息
-q, --quiet 不报告关于读取数据库的错误消息
-r, --regexp REGEXP 搜索基本正则表达式 REGEXP 来代替模式
--regex 模式是扩展正则表达式
-s, --stdio 忽略向后兼容性
-V, --version 显示版本信息
-w, --wholename 匹配完整路径名 (默认)
whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。
-b 定位可执行文件。
-m 定位帮助文件。
-s 定位源代码文件。
-u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
-B 指定搜索可执行文件的路径。
-M 指定搜索帮助文件的路径。
-S 指定搜索源代码文件的路径。
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
-a 查找全部内容,而非第一个文件
-n <文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p <文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
-w 指定输出时栏位的宽度。
-V 显示版本信息。
type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。
-a 显示一个名字的所有可能
-t 判断一个名字当前是否是alias、keyword、function、builtin、file
-p 查看一个外部命令的执行路径
-P 查看内部命令路径
返回结果:
alias 别名
keyword 关键字,Shell保留字
function 函数,Shell函数
builtin 内建命令,Shell内建命令
file 文件,磁盘文件,外部命令
unfound 没有找到