一、简介查找文件的几个命令:
1、which :查找可执行文件的位置
2、whereis:查找文件的位置,可以找到可执行命令和man page
3、locate:配合数据库查看文件位置
4、find:实际搜索磁盘查找文件位置
注意:find是在磁盘上遍历查找的,很消耗资源,应优先使用whereis和locate命令。
 
二、区别:
1、which:它是在PATH变量指定的路径中查找指定的文件,并返回第一个搜索结果。即通过which命令,可以查看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
注意:
       (1)、通常只会显示找到的第一个文件。如果想显示所有PATH目录下存在的文件,可以通过参数-a实现,例如# which -a grep
       (2)、只能查找可执行文件,普通文件即使在$PATH中也查找不到。
        (3)、由于which是在$PATH环境变量里搜寻文件名的,不同用户设置的环境变量不同情况下,搜索结果也不相同。可以通过 echo $PATH命令查看当前的环境变量
       
2、whereis:它和locate都是从数据库中查找数据的,因此速度很快。
      说明:Linux系统默认将系统内的所有文件都记录在数据库文件 /var/lib/mlocate/mlocate.db 中,但是这个数据库不是实时更新的,为避免查找已经删除的数据或无法查找新建立的文件等情况,可以在查找之前先用updatedb命令生成最新索引库。
注意:
(1)、whereis只能用于程序名的搜索,搜索范围比which大,当有些指令用which找不到时,可以用whereis查找。
(2)、可以迅速查找文件,而且可以提供这个文件的二进制可执行文件、源代码文件和使用手册页存放的位置。如果省略参数,则会返回所有信息。
(3)、如果找不到查找目标,会返回一个空字符串。
 
3、locate:和whereis差不多,是从数据库中查找数据,但是locate可以搜寻到包含文件名的所有文件,因此当只记得一部分文件名时,可以使用此命令搜寻。
     注意:可以使用-i参数,忽略大小写
 
4、find:从磁盘上查找数据,速度比较慢,但是功能非常强大,通过不同参数可以获得不同结果。find命令后面还可以同时接多个目录,用于同时在不同目录下查找文件。
 
三、find使用方法
1、名称、类型相关的参数
-name 参数可以指定要查找的文件名
-type   参数可以指定要查找的文件类型,主要包括:普通文件(f)、块设备文件(b)、字符设备文件(c)、目录(d)、链接文件(l)、socket(s)、及FIFO(p)等。
 
例如:查找/bin目录下名称为bash的普通文件
[root@localhost ~]# find /bin -name bash -type f
/bin/bash
 
2、时间相关参数
与时间查找相关的参数主要包括以下几个:
(1)、-atime n:将nX24小时内存取过的文件列出来。
(2)、-ctime n:将nX24小时内改变、新增的文件或目录列出来。
(3)、-mtime n:将nX24小时内修改过的文件或目录列出来
(4)、-newer file:把比file还要新的文件列出来
说明:
       n为代表天数的数字,+n表示查询第n天之前,-n表示查询从第n天(包括第n天)至今的文件。
例如:
在/usr/bin目录下查找建立不到1天的新文件,或24小时内修改过的文件
[root@localhost ~]# find /usr/bin/ -type f -mtime -1     
在/bin目录中查找最近100天没有使用过的程序
[root@localhost ~]# find /bin/ -type f -atime +100
在/root目录中查找3天之前(不包括第3天)被更改的文件
[root@localhost ~]# find /root/ -type f -mtime 3
 
3、使用者相关的参数
与使用者或组名相关的参数包括以下几个:
(1)、-uid n: n为数字,指用户账户ID,即UID
(2)、-gid n:n为数字,指组名ID,即GID
(3)、-user name:name为用户名
(4)、-group name:name为组名
(5)、-nouser:寻找文件的所属用户不存在的文件
(6)、-nogroup:寻找文件的所属组不存在的文件
当自行安装软件是,可能该软件的属性中没有文件的拥有者,此时就可以用-nouser和nogroup来查找
例如:
 
4、大小、权限相关参数
与文件大小及权限相关的参数主要包括以下几个:
(1)、-size  +/-  c/k :搜索大于或小于指定大小的文件,+表大于,c表byte,k表kbyte,M表Mbyte,G代表Gbyte
(2)、-perm mode:搜寻权限等于指定权限的文件
(3)、-perm -mode:搜寻包含权限
(4)、-perm +mode:搜寻被指定查找条件所包含的文件
注意:当用权限相关参数进行查找时,存在包含关系
例1:查找权限为-rwxr--r--即0744的文件,可以使用-perm -0744,但是属性为-rwsr-xr-x即4755的文件也会被列出来,因为-rwsr-xr-x的属性已经包括了-rwxr--r--的属性了。
例2:查找权限为-rwxr-xr-x即0755的文件,可以使用-perm +755,但是属性为-rw------的文件也会被列出来,因为它有-rw...的属性存在。
例3:在/home下寻找一个包含特殊权限的文件,可以使用-perm +700来实现,因为7表4(suid) + 2(sgid) + 1(sbit),三个特殊权限全部包含进来了,而+7000的含义在与只要文件中有4,2,1中的任何一个,就会列出来,因此这个指令可以列出所有特殊权限的文件
 
5、执行动作
通过find命令可以对查找到的结果进一步处理,只要在-exec后面再接额外的指令即可。
例如:用ls形式显示find所查询的结果ru
# find ./ -name 'file*' -exec ls -l {} \;
这里:-exec表示后面还可以接额外的命令,{}表示exec前面的find部分查找结果,\;表exec所接额外命令的结束,而exec表额外命令的开始。这里其实是执行ls -l {},即将find的结果以ls -l输出
注意:exec后面不能接别名alias,如不能使用ll命令代表ls -l

参考书目:《Linux系统直通车》电子工业出版社 刘明 蔡娜编著(第五章P82-p85)

Linux--文件查找命令的更多相关文章

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

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

  2. Linux文件查找命令find用法整理(locate/find)

    Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...

  3. Linux文件查找命令

    1. find find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件. find的使用格式如下: $ find <指定目录> <指定条件> <指定动作> ...

  4. Linux文件查找命令具体解释-which whereis find locate

    原创BLog.转载请注明出处 http://blog.csdn.net/hello_hwc? viewmode=contents which命令 首先查看man which的说明 which - sh ...

  5. Linux 文件查找命令详解

    find命令 Linux find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将 ...

  6. Linux文件查找命令find(转)

    Linux find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录 ...

  7. Linux文件查找命令 find 详解

    关于find命令 由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权 ...

  8. Linux文件查找命令find,xargs详述

    目录: 一.find 命令格式 1.find命令的一般形式为: 2.find命令的参数: 3.find命令选项: 4.使用exec或ok来执行shell命令: 二.find命令的例子: 1.查找当前用 ...

  9. locate linux文件查找命令

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.在一般的 di ...

  10. Linux文件查找命令find和xargs详解

    PS:find是个很强大的命令,能够匹配正则,查找对应权限,能够帮你精确的定位你的系统中的任何地方任何目录下的文件.下面这篇是关于find命令用法最详细的一篇了,记录下.还有要注意的:本文的分号:其实 ...

随机推荐

  1. Linux_rsylogd日志

    Linux_日志管理介绍(一)http://www.cnblogs.com/gossip/p/5972663.html Linux_rsyslogd日志服务(二)http://www.cnblogs. ...

  2. git初体验(六)git配置

    一.基本配置 看这篇Git 基本配置其实就解决很多问题了. 二.客户端配置 1.git bash 粘贴与编辑 在git bash客户端头部右键,现在属性,然后把"快速编辑模式勾选即可&quo ...

  3. 【Gym 100947C】Rotate It !!

    分两类,奇数和偶数的,用隔项前缀和算一下. #include <algorithm> #include <iostream> #define N 10005 using nam ...

  4. bzoj 1208 splay模板题2

    自己yy了找前驱和后继,学了学怎么删除...(反正就是练模板) #include<iostream> #include<cstdio> #include<cstring& ...

  5. Java中Unicode的编码和实现

    Unicode的编码和实现 大概来说,Unicode编码系统可分为编码方式和实现方式两个层次. 编码方式 字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值.“A”是一个字符,“ ...

  6. 【BZOJ-3725】Matryca 乱搞

    3725: PA2014 Final Matryca Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 160  Solved: 96[Submit][St ...

  7. linux远程登陆其他主机并执行命令的若干方式

    一.命令行登陆 ssh后,一定后边加双引号 写命令,否则命令实在本地执行的,多条命令的话用双引号隔开, ssh user@remoteNode "cd /home ; ls" 二. ...

  8. bzoj1042: [HAOI2008]硬币购物

    #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #i ...

  9. 何解決 LinqToExcel 發生「無法載入檔案或組件」問題何解決 LinqToExcel 發生「無法載入檔案或組件」問題

    在自己的主機上透過 Visual Studio 2013 與 IISExpress 開發與測試都還正常,但只要部署到測試機或正式機,就是沒辦法順利執行,卡關許久之後找我協助.我發現錯誤訊息確實很「一般 ...

  10. BZOJ2120 数颜色(带修改莫队)

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...