Linux 有三个查找文件的命令:find, whereis, locate 其中find 不常用,whereis与locate经常使用,因为find命令速度较慢,因为whereis与locate是利用数据库来查找数据,而find直接查找硬盘。

  1 whereis

  whereis 命令只能用户程序名称的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m) 和源代码文件(参数-s). 如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。

  但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

  

  whereis [-bmsu] 文件或者目录名

  -b: 只找二进制格式的文件

  -m: 只找在说明文件manual 路劲下的文件

  -s:  只找source 源文件

  -u: 查找不在上述三个选项中的其他特殊文件

  实例,查询ifconfig文件名

[root@oracledb ahome]# whereis ifconfig
ifconfig: /sbin/ifconfig /usr/share/man/man8/ifconfig.8.gz
[root@oracledb ahome]# whereis -b ifconfig
ifconfig: /sbin/ifconfig
[root@oracledb ahome]# whereis -m ifconfig
ifconfig: /usr/share/man/man8/ifconfig.8.gz
[root@oracledb ahome]# whereis -s ifconfig
ifconfig:

2 locate 

locate使用也非常简单,而且使用范围比whereis大的多,只需要部分文件名就可以进行模糊查询,同时locte还可以通过-r选项使用正则表达式,功能十分强大。与whereis一样 locate使用的索引数据库里的信息并不一定是实时有效的,可以使用updatedb命令更新索引数据库。

locate [-ir] keyword

实例,查询passwd命令,查找包含passwd字符的文件,显示前5条记录

[root@oracledb ahome]# locate passwd|head -n 5
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
/etc/security/opasswd
/lib64/security/pam_passwdqc.so

3 find

find 命令遍历当前工作目录及其子目录,在硬盘上遍历查找,非常耗硬盘资源,查找效率相比whereis和locate较低。

find [path] [option] [action]

  时间查找参数:

-atime  n: 将n*24小时内access过的文件列出来

-ctime   n: 将n*24小时内状态发生改变的文件列出来

-mtime  n: 将n*24小时内被修改过的文件列出来

-newer file: 把比file还要新的文件列出来

  名称查找参数:

-gid   n:  寻找群组ID为n的文件

-group name: 寻找群组名称为name的文件

-uid   n:  寻找拥有者ID为n的文件

-user name:  寻找拥有者名称为name的文件

-name file:    寻找文件名为file的文件(可以使用通配符)

       -nouser:  寻找文件所有者不在/etc/passwd的文件

       -nogroup:    寻找文件的所有组不在/etc/group的文件

  

  实例,将过去24小时内有改动的文件列出来。

[root@oracledb ahome]# find / -mtime 0|head -n 10
/
/proc
/proc/kmsg
/proc/stat
/proc/meminfo
/proc/vmstat
/proc/mdstat
/proc/acpi
/proc/acpi/event
/proc/sys

将3天前24小时内有改动的文件列出

  [root@oracledb ahome]# find / -mtime 3

  

  寻找/etc 下比/etc/passwd新的文件

[root@oracledb ahome]# find /etc -newer /etc/passwd
/etc
/etc/group
/etc/gshadow
/etc/shadow

查找/var 下4天前被修改过的文件

[root@oracledb ahome]# find /var -mtime +4

查找/var 下4天以内被修改过的文件

[root@oracledb ahome]# find /var -mtime -4

查找/var 下4~5天内被修改过的文件

[root@oracledb ahome]# find /var -mtime 4

查找/home 下属于latiny1的文件

root@oracledb ahome]# find /home -user latiny1
/home/latiny1
/home/latiny1/.kshrc
/home/latiny1/.bashrc
/home/latiny1/.bash_profile
/home/latiny1/.mozilla
/home/latiny1/.mozilla/plugins
/home/latiny1/.mozilla/extensions
/home/latiny1/.bash_logout
/home/latiny1/.gnome2
/home/latiny1/.viminfo

查找不属于任何人的文件

[root@oracledb ahome]# find / -nouser

查找文件名为latiny1 的文件

[root@oracledb ahome]# find / -name latiny1
/var/spool/mail/latiny1
/home/latiny1

查找/var 目录下文件类型为Socket的文件名

[root@oracledb ahome]# find /var -type s|head -n 10
/var/run/rpcbind.sock
/var/run/abrt/abrt.socket
/var/run/acpid.socket
/var/run/portreserve/socket
/var/run/dbus/system_bus_socket
/var/run/cups/cups.sock
/var/run/sdp
/var/tmp/.oracle/s#1623.1
/var/tmp/.oracle/s#1631.2
/var/tmp/.oracle/s#1590.2

               

查找包含有SGID或者SUID 或者SBIT属性的文件

[root@oracledb ahome]# find / -perm +7000|head -n 10

find还可以在后面再接其他合适的命令来处理查找结果,如查找/srv/ahome里包含SUID、SGID、SBIT属性的文件或者目录,然后对结果使用ls -l命令。

[root@oracledb ahome]# find /srv/ahome -perm +7000 -exec ls -l {} \;
total 4
-rw-rw-r-- 1 latiny1 latiny1 0 Jul 3 11:13 lainty1
-rw-rw-r-- 1 latiny2 project 7 Jul 3 11:20 latiny2
-rw-r--r-- 1 root project 0 Jul 3 14:27 test1.sh

[root@oracledb ahome]# find /srv/ahome -name latiny2 -exec ls -l {} \;
-rw-rw-r-- 1 latiny2 project 7 Jul 3 11:20 /srv/ahome/latiny2

查找/etc 下文件大小介于50K到60K的文件,并且对结果使用ls -l命令

[root@oracledb ahome]# find /etc -size +50k -size 60k -exec ls -l {} \;
-rw-r--r--. 1 root root 61021 Nov 12 2010 /etc/gconf/schemas/rhythmbox.schemas
[root@oracledb ahome]#

查找/etc 下文件容量大于50K且文件所有者不是root的文件,并且对结果使用ls -l命令

[root@oracledb ahome]# find /etc -size +50k -not -user root -exec ls -l {} \;

[root@oracledb srv]# find ./ -size -50k -not -user root -exec ls -l {} \;
-rw-rw-r-- 1 latiny2 project 7 Jul 3 11:20 ./ahome/latiny2
-rw-rw-r-- 1 latiny1 latiny1 0 Jul 3 11:13 ./ahome/lainty1

查找/etc 容量大于1500k以及容量等于0的文件

[root@oracledb srv]# find /etc -size 0k -or -size +1500k

linux的查找命令 find whereis locate的更多相关文章

  1. linux中查找命令find、locate、whereis、which、type区别

    linux中查找命令find.locate.whereis.which.type区别 1. find Java代码 find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/ ...

  2. linux 文件查找,which,whereis,locate,find

    linux 文件查找,which,whereis,locate,find 一:which 主要用于查找可执行命令的所在位置: 如图,查找命令 ls的目录: 二:whereis 主要用于查找命令的帮助文 ...

  3. linux中查找命令find、locate、whereis、which、type的区别

    find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件.与查询数据库(/var/lib/locatedb)文件不同,find查找的是磁盘空间. locate locate命令其实 ...

  4. linux vi查找命令

    linux vi查找命令   div id="article_content" class="article_content">  使用vi编辑器编辑长文 ...

  5. Linux文件查找命令find,xargs详述【转】

    转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Li ...

  6. Linux的五个查找命令:find,locate,whereis,which,type

    使用电脑的时候,经常需要查找文件. 在Linux中,有很多方法可以做到这一点.国外网站LinuxHaxor总结了五条命令,你可以看看自己知道几条.大多数程序员,可能经常使用其中的2到3条,对这5条命令 ...

  7. linux中查找(find、locate、which、whereis、grep)命令汇总、帮助命令(man、whatis、apropos、info、help)汇总

    (一)find命令详解 find:功能:文件搜索: 语法:find[搜索范围][匹配条件]:  只要匹配条件完全符合才可以被显示,使用通配符*匹配条件*则可以显示匹配条件的所有目录,问号?匹配单个字符 ...

  8. linux中的查找命令find,locate,which,whereis

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索.这些是从网上找到的资料,因为有时很长时间不会用到,当要用的时候经常弄混了.  which       查看可执行文 ...

  9. Linux 查找文件命令 find whereis locate

    Linux 有三个查找文件的命令:find, whereis, locate 其中find 不常用,whereis与locate经常使用,因为find命令速度较慢,因为whereis与locate是利 ...

随机推荐

  1. C语言 · 还款计算

    标题: 还款计算 银行贷款的等额本息还款方法是: 每月还固定的金额,在约定的期数内正好还完(最后一个月可能会有微小的零头出入). 比如说小明在银行贷款1万元.贷款年化利率为5%,贷款期限为24个月. ...

  2. CAS单点登陆,URL多出个参数jsessionid导致登陆失败问题

    目录: 1.定位问题 2.问题产生的原因 3.解决问题 一 定位问题 首先,如下图所示:输入到地址栏的地址被302重定向到单点登录地址,地址由Response Headers中的参数Location所 ...

  3. git clone 后误删除了分离出来的文件怎么恢复?

    git clone 后,会分离出项目的文件. 误删除了,可以使用以下命令恢复: #先检查一下git状态 git status #通过如下命令重新分离出文件 git checkout -f HEAD

  4. Efficient Online Segmentation for Sparse 3D Laser Scans-- 在线的稀疏点云分割

    在基于激光的自动驾驶或者移动机器人的应用中,在移动场景中提取单个对象的能力是十分重要的.因为这样的系统需要在动态的感知环境中感知到周围发生变化或者移动的对象,在感知系统中,将图像或者点云数据预处理成单 ...

  5. golang处理signal

    signal一般用来实现优雅重启,或者重新加载配置文件等操作. 废话不多说,上表格 动作 号码 信号 golang kill pid 15 SIGTERM terminated kill -9 pid ...

  6. Swagger UI 传入对象类型参数

    Swagger要传送对象作为参数,只需添加@ModelAttribute或@RequestBody @RestController @RequestMapping("/api/json/re ...

  7. 最新Java基础面试题及答案整理

    最近在备战面试的过程中,整理一下面试题.大多数题目都是自己手敲的,网上也有很多这样的总结.自己感觉总是很乱,所以花了很久把自己觉得重要的东西总结了一下. 面向对象和面向过程的区别 面向过程:    优 ...

  8. python中基本类型的连接组合和互相转换

    本篇总结了一下字符串,列表,字典,元组的连接组合使用和类型的互相转换小例子,尤其列表中的extend()方法和字典中的 update方法非常的常用. 1.连接两个字符串 a = "hello ...

  9. iOS - 跳转到系统设置

    一.跳转到自己应用设置(iOS8以上系统推荐使用) //跳转到自己应用干的设置配置页(如 定位.相机.相册 这些隐私配置) [[UIApplication sharedApplication] ope ...

  10. thinkcmf 5关闭后台验证码

    控制器修改 D:\cmf\thinkcmf\app\admin\controller\PublicController.php 注释 /* $captcha = $this->request-& ...