linux文件查找-find和locate
一.find
使用语法:find [查找目录] [查找规则] [查找完后执行的action]
find是根据具体目录进行搜索
1.查找目录
如果不指定查找目录,默认在当前目录下进行查找
如果需要在多个目录下查找,多个不同的目录通过空格隔开
2.查找规则
①根据文件名查找 -name
-name和-iname:后者表示不区分大小写
例如查找/tmp和/var目录下以.txt结尾的文件:find /tmp /var -name '*.txt'
②根据文件类型查找 -type
-type 文件类型,其中文件类型有
f:普通文件 d:目录文件 l:链接文件 b:块设备文件 c:字符设备文件 p:管道文件 s:socket文件
例如查找/tmp目录下的链接文件:find /tmp -type l
③根据所属用户和组查找
-user:根据属主查找
-group:根据属组查找
-nouser和-nogroup分别表示没有属主和属组,一般不允许系统中出现没有属主和属组的文件
例如查找/tmp目录下属主为oracle的文件:find /tmp -user oracle
例如查找/tmp目录下属组为phh的文件:find /tmp -grouop phh
例如查找系统中没有属主的文件:find / -nouser
④根据uid和gid查找
-uid:根据uid查找
-gid:根据gid查找
例如查找/tmp目录下uid为501的文件:find /tmp -uid 501
⑤根据大小查找 -size
size的单位可为b、c、w、k、M、G(各单位代指的含义可通过man find查看),如果不指定单位默认为b
-size 2M表示大小为2M,-size +2M表示大于2M,-size -2M表示小于2M
例如查找/tmp目录下大于1M的文件:find /tmp -size +1M
⑥根据权限查找 -perm
+ / -
⑦根据时间戳查找 -atime、-mtime、-ctime(单位均为天)
先通过stat命令查看时间戳,假设创建一个文件a.txt
[root@oldboy ~]# stat a.txt File: `a.txt' Size: 12 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 269847 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2019-04-05 16:29:02.361000255 -0400 Modify: 2019-04-05 16:29:02.361000255 -0400 Change: 2019-04-05 16:29:02.361000255 -0400
最后三行,Access对应-atime,表示文件最后的访问时间
Modify对应-mtime,表示文件内容的最后修改时间
Change对应-ctime,表示文件状态的最后修改时间,包括大小、权限、属主属组、链接数等
例如查找/tmp目录下5天内未被访问过的文件:find /tmp -atime +5
例如查找/tmp目录下5天内被访问过的文件:find /tmp -atime -5
atime、mtime和ctime的单位为天,还有一组与它们对应的时间戳,分别为amin、mmin和cmin,单位为分钟
⑧多条件查询 -a、-o、-not
-a表示多个天剑同时满足,例如查找/tmp目录下属主为oracle的.sh文件:find /tmp -user oracle -a -name '*.sh'
-o表示多个条件满足一个即可,例如查找/tmp目录下没有属主、或者没有属组的文件:find /tmp -nouser -o -nogroup
-not表示对条件取反,例如查找/tmp目录下属主不是root的文件:find /tmp -not -user root
3.查找完后执行的action
①-print:默认动作,将查询结果打印出来
[root@oldboy ~]# find -name '*.txt' ./a.txt ./test.txt [root@oldboy ~]# find -name '*.txt' -print ./a.txt ./test.txt
②-ls:将查询结果通过ls显示出来
[root@oldboy ~]# find -name '*.txt' -ls 269847 4 -rw-r--r-- 1 root root 12 Apr 5 16:29 ./a.txt 269848 4 -rw-r--r-- 1 root root 6 Apr 5 17:10 ./test.txt
③-ok command \; 查找后执行命令,并询问用户是否执行
④-exec command \; 查找后直接执行命令,不询问用户
[root@oldboy ~]# find -name '*.txt' -ok chown phh {} \; < chown ... ./a.txt > ? y < chown ... ./test.txt > ? y [root@oldboy ~]# ll *.txt -rw-r--r--. 1 phh root 12 Apr 5 16:29 a.txt -rw-r--r--. 1 phh root 6 Apr 5 17:10 test.txt [root@oldboy ~]# find -name '*.txt' -exec chown root {} \; [root@oldboy ~]# ll *.txt -rw-r--r--. 1 root root 12 Apr 5 16:29 a.txt -rw-r--r--. 1 root root 6 Apr 5 17:10 test.txt
上面例子中的{ }代表查找到的文件,\和;之间没有空格。
二、locate
locate命令用来查找文件或目录。创建Linux系统时会自动创建一个数据库/var/lib/mlocate/mlocate.db,并且每天自动更新一次,这个数据库中包含本地所有文件的信息。locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索数据库。但是locate的查找不是实时的,有时会找到已经被删除的数据,或者刚刚建立的文件无法查找到,这是因为数据库文件没有更新。为了避免这种情况,在使用locate之前需先使用updatedb命令手动更新数据库。
整个locate工作其实是由四部分组成的:
/usr/bin/updatedb:主要用来更新数据库,通过crontab自动完成的
/usr/bin/locate:查询文件位置
/etc/updatedb.conf:updatedb的配置文件
/var/lib/mlocate/mlocate.db:存放文件信息的文件
使用语法:locate [参数] 模式
locate支持模糊匹配,例如查询文件名中包含passwd的文件:locate passwd
三.which
which会在PATH环境变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。即使用which命令,可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
四.whereis
whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s),如果省略参数,则返回所有信息。
whereis和locate一样,都是通过数据库进行搜索。
cat: /bin/cat /usr/share/man/man1/cat.1.gz /usr/share/man/man1p/cat.1p.gz [root@oldboy mlocate]# which passwd /usr/bin/passwd [root@oldboy mlocate]# whereis passwd passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man5/passwd.5.gz /usr/share/man/man1/passwd.1.gz [root@oldboy mlocate]# locate passwd /etc/passwd /etc/passwd- /etc/pam.d/passwd /etc/security/opasswd /lib64/security/pam_passwdqc.so /lib64/security/pam_unix_passwd.so /usr/bin/gpasswd /usr/bin/kpasswd ……
转载于:https://www.cnblogs.com/Forever77/p/10651997.html
linux文件查找-find和locate相关推荐
- linux 查找文件 locate,linux文件查找(find,locate)
文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件 ...
- linux文件查找命令find,locate
简介 vi : visual interface, 可视化接口.vim(VI IMproved) vim编辑器:文本编辑器.文本:纯文本,ASCII text; unicode; 文本编辑器种类: 行 ...
- Linux文件查找find和locate
目 录 第1章 locate文件查找 1 1.1 概述 1 1.2 locate文件查找的特性 1 第2章 文件查找概述 1 第3章 1 3.1 文件名查找 1 3 ...
- Linux文件查找之findlocate
Linux文件查找之find&locate 一.概述 Linux系统核心的思想之一"一切皆文件",对于这么多的文件,如何快速查找过滤呢?下面我们就看看系统提供的文件查找命令 ...
- Linux文件查找命令find用法整理(locate/find)
Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...
- linux的locate工具,linux文本查找工具之locate、find
linux文本查找工具之locate.find 一.文件查找分为两类: 1.非实时查找:locate 2.实时查找:find 二.非实时查找:locate 非实时查找:查找速度快.非精准查找.模糊查找 ...
- linux进入文件全文搜索命令,Linux 文件查找命令详解
大家好,我是"孤云幕雨":祝大家中秋快乐,今天给大家带来的是<Linux文件查找命令> 一.locate:依赖于事先构建的索引 v依赖于事先构建的索引:索引的构建是在系 ...
- Linux文件查找与tar包管理、企业级sed应用 软件包管理与编译安装httpd
总结 第7节 Linux文件查找与tar包管理.企业级sed应用 使用locate命令 使用find命令 压缩和解压缩工具 01-文件搜索 locate (00:02:30) locate test. ...
- linux检索docx内容,linux 文件查找和内容过滤命令.docx
linux 文件查找和内容过滤命令 linux 文件查找和内容过滤命令 grep.fgrep和egrep命令 这组命令以指定模式搜索文件,并通知用户在什么文件中搜索到与指定的模式匹配的字符串,并打印出 ...
最新文章
- HTML5 本地文件操作之FileSystemAPI整理(二)
- 朴素、Select、Poll和Epoll网络编程模型实现和分析——Epoll模型
- [mysql] 常用命令二
- Keras functional API快速入门
- 修改Tomcat默认端口号,避免与IDEA冲突
- qt.targets(66,3):元素<Import>中的“Project”特性的值无效
- 什么时候使用mysql触发器_MySQL触发器的使用
- 现代软件工程 第十一章 【软件设计与实现】 练习与讨论
- Nginx环境搭建Discuz论坛
- Xilinx发布新版SDAccel开发环境加速数据中心应用
- 2017/12/30 GUI和动态代理
- 写论文:证明非线性系统的稳定性
- 匹配区县代码_全国区县代码1
- win系统磁盘管理知识
- Power BI前置知识+ 一张报表制作的流程
- 网易云课堂-微专业Java
- Vim插件管理:Pathogen安装
- SAP MM模块-库存盘点BAPI的使用及注意点
- 大数据挖掘课程案例资源介绍
- 程序员的财务自由之路(四)- 选择大于努力
热门文章
- python 制作动画片_cocos2d from python Animation 动画片的实现
- ConcurrentHashMap内部原理浅析
- 员工管理的html页面,员工管理.html
- redhat 5.4 yum配置
- JS仿淘宝网顶部的导航菜单
- LeetCode简单题目(#160 #167 #168 #169 #171)-5道(序列、数字)
- ContentServer迁移的几个步骤
- 开源WebGIS实施方案
- 2021-05-06 git 设置XX门8580端口代理访问github
- ShoeBox一个超级好用的图片切割工具