Linux查找命令对比(find、locate、whereis、which、type、grep)
//太长不看版
find查找磁盘空间,相较于locate和whereis速度较慢。
find和locate的查找单位为文件或者目录,locate其实是find -name的另一种写法。
locate和whereis都是在数据库中查找,所以新增文件无法查找到,必须先updatedb。
whereis只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。
which和type查找的单位都是命令,type可区分命令类型。
grep查找的单位是整行信息,在一个或多个文件中搜索字符串模板,功能是分析一行信息。(功能强大)
find
find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。与查询数据库(/var/lib/locatedb)文件不同,find查找磁盘空间。
$find [指定目录] [选项] [指定动作](不可调换位置)
- [指定目录]: 所要搜索的目录及其所有子目录。默认为当前目录。
-[选项]: 所要搜索的文件的特征。
//常用选项
-name filename 查找名为filename的文件
-user username 按文件属主来查找
-group groupname 按组来查找
-mtime -n +n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n 按文件访问时间来查找文件
-ctime -n +n 按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup 查无有效属组的文件,即文件的属组在/etc/groups中不存在
-type b/d/c/p/l/f 查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] 查长度为n块[或n字节]的文件也可查找一个大小范围内的文件,用-n,+n
-[指定动作]: 对搜索结果进行特定的处理。
如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。
find实例
//查找当前目录下以“1”开头的文件
find . -name "1*"
//.代表当前目录下 //查找etc目录下以字母(不区分大小写)开头,.sh结尾的文件
find /etc -iname "[a-z]*.sh"
//*表示任意多个字符 //查找etc目录下大于20k,十天前创建的文件
find /etc -size +20k -a -mtime +10
//-a表示and,-o表示or //查找当前目录下的普通文件,并列出他们的完整路径
find . -type f -exec ls -l {} \;
//反斜杠表示转义,{}表示当前find查找出来的文件名
//如果报find: missing argument to `-exec'的错就是{}和\之间没有加空格
locate
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。
$locate [指定目录] [选项](可调换位置)
[指定目录]:所要查找的任意文件名称或者查找任意目录下的任意文件。
-[选项]:筛选文件的条件。
-e 将排除在寻找的范围之外。
-1 如果是,则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息
-i 忽略字母大小写
locate实例
//查找etc目录下以sh开头的文件
locate etc/sh //在根目录下新建文件,并查找
cd
touch text.log
locate /根目录/text
//发现查找不到刚刚新建的文件,需要updatedb
updatedb
locate /根目录/text
//发现可以查找到文件
whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。同locate一样,查询数据库(/var/lib/locatedb)文件。所以和locate一样,查找新增加的文件前,需要先使用updatedb命令,手动更新数据库。
$whereis [选项] [程序名](不可调换位置)
-[选项]:设置查找文件的类型
-b 只查找二进制文件。
-B <目录>只在设置的目录下查找二进制文件。
-f 不显示文件名前的路径名称。
-m 只查找说明文件。
-M <目录>只在设置的目录下查找说明文件。
-s 只查找原始代码文件。
-S <目录>只在设置的目录下查找原始代码文件。
-u 查找不包含指定类型的文件。
[程序名]:只能用于程序名
whereis实例
//查找和find相关的所有文件
whereis find //查找和find相关的二进制文件
whereis -b find
which
which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
$which [命令名]
命令说明which是有选项的,但是我尝试了加选项,对结果并没有影响。希望知道的人来帮我解答这个问题!
which实例
//which 查找pwd命令
which pwd //which 查找adduser命令
which adduser
which是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档的。所以,不同的 PATH 配置内容所找到的命令是不一样的。
type
type命令其实不能算查找命令,它是用来区分某个命令到底是由shell自带的,还是由shell外部的独立二进制文件提供的。如果一个命令是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
$type [选项] [命令名]
-[选项]
-t 输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;
-p 如果给出的指令为外部指令,则显示其绝对路径;
-a 在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
type实例
//type输出别名
type ls
//输出是 ls 是 `ls --color=auto' 的别名
//type输出shell关键字
type if
//输出是 if 是 shell 关键字 //type输出shell内嵌
type type
//输出是 type 是 shell 内嵌 //type输出文件
type gedit
//输出是 gedit 是 /usr/bin/gedit type输出非文件且非命令
type adfaf
//输出是 bash: type: frydsh: 未找到 //命令类型
alias:别名。
keyword:关键字,Shell保留字。
function:函数,Shell函数。
builtin:内建命令,Shell内建命令。
file:文件,磁盘文件,外部命令。
unfound:没有找到。
grep
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。若不指定任何文件名称,或是所给予的文件名为"-",则grep指令会从标准输入设备读取数据。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。
grep命令的功能是分析一行信息,若其中有我们所需要的信息,就将其拿出来。需要注意的是它以整行为单位进行数据的选取。
$grep[选项] [文件名]
-[选项]
//常用选项
-a 将 binary 文件以 text 文件的方式搜寻数据
-c 计算找到 '搜寻字符串' 的次数
-i 忽略大小写的不同,所以大小写视为相同
-n 顺便输出行号
-v 反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
grep实例
//在输入的字符中匹配root字符串,并输出行号
grep -n root //提取/etc/passwd文件中,未出现 root 的行
grep -v /etc/passwd root
Linux查找命令对比(find、locate、whereis、which、type、grep)的更多相关文章
- Linux的五个查找命令:find,locate,whereis,which,type
使用电脑的时候,经常需要查找文件. 在Linux中,有很多方法可以做到这一点.国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条.大多数程序员,可能经常使用其中的2到3条,对这5条命令 ...
- 【转】Linux的五个查找命令:find,locate,whereis,which,type
原文网址:http://www.ruanyifeng.com/blog/2009/10/5_ways_to_search_for_files_using_the_terminal.html 最近,我在 ...
- Linux的五个查找命令:find,locate,whereis,which,type 及其区别
1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> ...
- Linux查找命令find、locate、whereis、which、type
find:查找指定下目录的文件 -empty:查找空文件 -name:按名字查找 -type f(文件 or d:目录):按类型查找
- linux中查找命令find、locate、whereis、which、type区别
linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...
- linux查找命令(find)
linux查找命令(find) 命令格式: find [目录] [选项] [选项的条件] 选项: -name:文件名称查找 -size:文件的大小来查找 -perm:文件的权限来查找 ①根据文件的名称 ...
- Linux的五个查找命令find,locate,whereis,which,type
Linux的五个查找命令 1. find 最常见且最强大的命令,可以查找任何文件. 格式 $ find 指定目录 指定条件 指定动作 指定目录: 所要搜索的目录及其子目录,默认当前目录 ...
- linux命令总结之查找命令find、locate、whereis、which、type
我们经常需要在系统中查找一个文件,那么在Linux系统中我们如何准确高效的确定一个文件在系统中的具体位置呢?一下我总结了在linux系统中用于查找文件的几个命令. 1.find命令 find是最常用也 ...
- linux中查找命令find、locate、whereis、which、type的区别
find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/var/lib/locatedb)文件不同,find查找的是磁盘空间. locate locate命令其实 ...
随机推荐
- 设计模式:策略模式,Java集合定制排序的核心思想
前言 前阵子面试的时候,有个面试官问我了解哪些设计模式吗?我说了策略模式.接着他问有哪些场景应用,我又回答他jdk的集合工具类有个排序方法就用到了策略模式,也就是java.util包下的Collect ...
- C#写好的类库dll在别人调用的时候也能看到注释的方法
1.用///的方法添加注释 2.项目的属性里面,要选上"生成XML注释文档" 菜单 Project -> 'xxxx' Properties -> Build -> ...
- VMWare虚拟机:三台虚拟机互通且连网
虚拟机:三台虚拟机互通且连网 目录 一.虚拟机 相关软件 虚拟机安装 Linux系统安装 1) 使用三个Linux虚拟机 多台虚拟机互通且上网 1) 多台配置注意事项 2) 虚拟机软件的配置 3) W ...
- python List交集、并集、差集
工作中遇到了求两个集合的差集,但是集合集合中包含字典,所以使用difference方法会报错,看了一些别人的博客,整理了一下. 1. 获取两个list 的交集print list(set(a).int ...
- jProfiler远程连接Linux监控jvm、tomcat运行状态
第一步.下载软件 官网地址:https://www.ej-technologies.com/download/jprofiler/files , Mac客户端 GUI界面 Linux服务端 第二步.安 ...
- 实现跳转的jsp小例子
<%@page import="java.io.UnsupportedEncodingException"%> <%@ page language="j ...
- AbstractCollection
概述 这个类提供了实现Collection接口的骨架,来最小化实现此接口所做的工作. 要实现一个不可修改的 collection,编程人员只需扩展此类,并提供 iterator 和 size 方法的实 ...
- 腾讯位置服务API快速入门
前言 之前项目有个需求,在网页上显示微信发送过来的位置信息,该开始想用百度地图,后来发现腾讯地图相对简单一点 快速入门 申请Key https://lbs.qq.com/guides/startup. ...
- Centos7 搭建owncloud云存储
Centos7 搭建owncloud云存储 首先准备必要的软件和资料. 这里我已经整理好了: 百度云共享 不过最好还是自己去官网上下.这里只不过是提供了快捷方式. owncloud官网:https:/ ...
- CEPH RGW多 ZONE的配置
相关的名称解释 Region :可以理解为区域,是基于地理位置的逻辑划分:如:华南,华北之类,包含多个region的Ceph集群必须指定一个master region,一个region可以包含一个或者 ...