Linux 文件搜索命令:find、which、whereis 和 locate
Linux 提供了许多用于文件搜索的命令,这些命令都很强大,但是也有一些不同之处,这里分别介绍一下。
一、find 命令
find 是最常见和最强大的一个文件搜索命令。使用 find 命令可以在指定目录中搜索指定的文件。语法如下:
- find [目录] [选项] [动作]
其中,目录是 find 命令将要去搜索的目录,包括该目录及其子目录,默认情况下是当前目录及其子目录;选项指定以何种方式查找文件;动作指定要查找哪些文件,动作可以是一个字符串,也可以是一个正则表达式。
由于 find 命令是对整个磁盘进行搜索,因此搜索速度会比较慢,但是如果有这个文件的话,一定可以找到。为了加快 find 查找的速度,在使用 find 命令时,最好不要直接在根目录下进行查找,搜索目录越小越好,搜索条件越精确越好。
find 命令常见选项
1)-name 、-iname 选项:根据指定的文件名查找文件,其中使用 -iname 可以忽略大小写;
- find [目录] -name [文件名]
需要注意的是,find 命令是精准搜索,即精准的搜索指定目录下与文件名完全匹配的文件,如果需要模糊搜索的话,可以使用正则表达式。简单举个例子:
2)-size 选项:根据指定的文件大小查找文件;
-size 选项后面的动作是指定的文件大小,可以在动作前加上 + / - 符号来表示查找大于 / 小于指定大小的文件,不加则表示查找等于该指定大小的文件。查找文件的默认单位是块( 1 块 = 512 字节 = 0.5KB),可以在数字后面添加指定字符来改变单位,常用的单位有 c (字节)、k(k字节)、M(M字节)、G(G字节)。
- find [目录] -size [+/-]unitsize
以下面这一个目录中的文件为例,演示一下 -size 选项的用法:
需要注意的是,默认单位为块,一个文件块是 512 字节,当一个文件小于 512 字节时,也是会被当成一个块的大小来对待的。
3)-user 选项:搜索指定所有者的文件;
4)-group 选项:搜索指定组的所有文件;
5)-amin 选项:查找指定时间内被访问的文件,单位是分钟;
- find /etc -amin -5 // 查找 /etc 目录下5分钟内被访问过的文件
- find /etc -amin +5 // 查找 /etc 目录下5分钟之前被访问过的文件
在这个例子中,我首先使用 vim 打开了 add.c 文件,然后使用 find 命令的 -amin 选项搜索被访问的文件。
6)-cmin 选项:查找指定时间内文件属性被改变了的文件,单位是分钟;
用法与 -amin 选项一样,但是功能不同。
7)-mmin 选项:查找指定时间内文件内容被改变了的文件,单位是分钟;
用法与 -mmin 选项一样,但是功能不同。
8)-a 选项:and,用于连接两个条件,表示要两个条件同时满足;
还是以上面的 HelloWorld 目录为例,这里使用 -a 选项查找该目录下文件大小在 200 字节到 500 字节之间的文件。
9)-o 选项:or,用于连接两个条件,表示两个条件满足一个即可;
10)-type 选项:根据文件类型查找,后面可以接 f、d、l,分别代表文件类型、目录类型和软链接文件。
- find /etc -type f
二、which 命令
which 命令可以用于搜索一个命令所在的目录及其别名信息。语法如下:
- which 命令名
三、whereis 命令
whereis 命令可以用来搜索一个命令所在的目录以及其 man 手册等相关文件的路径。
四、locate 命令
locate 命令与 find -name 命令功能一样,可以用来查找文件或目录 ,但是要比 find 命令查找起来速度快很多。这是因为 locate 命令并不搜索具体的目录,而是搜索一个数据库 /var/lib/mlocate/mlocate.db。这个数据库包含本地绝大多数文件的信息(不包括 /tmp 目录下的文件)。Linux 系统会自动创建这个数据库,并且每天都会自动更新一次。locate 命令的语法如下:
- locate 文件名
需要注意的是,locate 命令所搜索的数据库不是即时更新的。因此,如果你新创建了一个文件,想要立即使用 locate 搜索这个文件,是搜索不到的;同样,如果你删除了一个文件,然后立即使用 locate 命令,仍然可以搜索到这个文件。因此,在使用 locate 命令之前,我们希望数据库是更新了的,可以使用 updatedb 命令手动更新数据库,然后再使用 locate 命令,就不会出现上述问题了。此外, /tmp 目录不在 mlocate.db 的查找范围内,因此如果你在 /tmp 目录下新建了一个文件,然后更新数据库,再使用 locate 命令查找,也是查找不到的。
使用 -i 选项可以忽略大小写。
Linux 文件搜索命令:find、which、whereis 和 locate的更多相关文章
- Linux —— 文件搜索命令
文件搜索命令(配置文件/etc/updatedb.conf) locate 文件名 搜索速度非常快 在后台数据库中按照文件名搜索 updatedb 更新数据库 只可以按照文件名搜索 whereis 命 ...
- Linux文件搜索命令
文件搜索命令:locate locate 文件名 在后台数据库中按文件名搜索,搜索速度很快(比find命令要快得多) locate命令所搜索的后台数据库的位置:/var/bin/mlocate 支持模 ...
- Linux系列教程(六)——Linux文件搜索命令
前一篇博客我们讲解了Linux链接命令和权限管理命令, 通过 ln -s 链接名 表示创建软链接,不加-s表示创建硬链接:还有三个更改权限的命令,chmod命令可以更改文件或目录权限,chown命令 ...
- Linux文件搜索命令locate、which、grep详解
命令locate详解 命令locate,其基本功能是在文件资料库中可以快速的搜索系统文件,占用系统资源很少,例如:locate my.cnf 还可以使用locate -i [文件名],不区分大小写进行 ...
- linux 文件搜索命令locate及updatedb
windows 搜索工具Everything是根据NTFS日志来搜索的,所以速度特别快 locate 类似于windows的Everything,搜索速度比较快 如果没有locate命令,可安装 yu ...
- linux 文件搜索命令find、-name、-iname、通配符*?、-size、-user、-group、-amin、-cmin、-mmin、-a、-o、-exec/-ok、-inum
尽可能规划好目录结构,少用文件搜索操作,因为它会占用大量的系统资源 find /bin/find find [搜索范围] [匹配条件] find /etc -name initfind /etc -n ...
- Linux文件查找命令find用法整理(locate/find)
Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...
- Linux文件搜索命令find
命令find可以根据文件的不同属性在指定的范围内搜索文件,例如: 根据文件名进行查找,在目录/etc下搜索文件名为init( -iname 可以实现不区分大小写进行查找)的文件,实现精准查找,只查找文 ...
- 【find】linux文件搜索命令find/locate
参考链接:https://mp.weixin.qq.com/s/y8LeZ0-9D56TWsD-ivPaHQ 一.按文件名称查找 按照文件名称查找是 find 最常见的用法,需要注意的是,搜索的文件名 ...
随机推荐
- tbb静态库编译
源自Intel论坛 Jeff的方法https://software.intel.com/en-us/forums/intel-threading-building-blocks/topic/29779 ...
- Day9 抽象类和接口
抽象类 抽象类定义 只约定类所具有的抽象行为,没有具体实现相应行为. 语法格式 abstract class 类名{ 常量; 变量; 构造(); 访问修饰符abstract 返回类型 方法名;//抽象 ...
- ethers.js-6-Low-Level API
Low-Level API These are advanced, low-level API features that should, for most people not be necessa ...
- python-文件基本操作(一) (转载)
转载自: https://www.cnblogs.com/nizhihong/p/6528439.html 一.打开文件的方法: 注意:file()和open()基本相同,且最后要用close()关闭 ...
- 安装vue
node.js环境(npm包管理器) vue-cli 脚手架构建工具 cnpm npm的淘宝镜像 1) 安装node.js 从node.js官网下载并安装node,安装过程很简单,一直点下一步就ok了 ...
- Stm32-uclinux启动后的调试
Stm32-uclinux启动后的调试 1. 修改__pfn_to_page使得能够启动 根据STM32F103 ucLinux开发之三(内核启动后不正常)的描述,内核无法启动是选择了平板内存模式后 ...
- 【jq】插件—弹出层layer.js
layer.js包含了所有的层级情形,并且附加的有:tab层,相册层.webIM层. 适用于移动版本的layer.js 为layer for mobile 配套的layui 非常适合用于后台系统的 ...
- java ssm 后台框架平台 项目源码 websocket即时聊天发图片文字 好友群组 SSM源码
官网 http://www.fhadmin.org/D 集成安全权限框架shiro Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠E ...
- 聊聊iOS Keychain
某天,小熊碰见这样一个错误 Couldn't update the Keychain Item问题处理 ,网上搜索了下网上很多解决方案,依然百撕不得骑姐.后来参考下面两篇文章.才发现是用法不正确,网上 ...
- Onvif获取rstp地址GetCapabilities能力时,出现error 4或者52的的解决方法
在获取Onvi能力soap_call___tds__GetCapabilities的接口中有时候会出现error:4或者52的情况,是因为在soapC.c中用不到extension,所以我们必须得把它 ...