linux的locate命令和find命令的区别

一:locate命令

  locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作(crontab)程序来建立。当我们建立好这个数据库后,就可以方便地来搜寻所需文件了。

即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在  /var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找。在命令提示符下直接执行#updatedb 命令即可:

  例如:查找相关字issue

  $ locate issue

  /etc/issue

  /etc/issue.net

  /usr/man/man5/issue.5

  /usr/man/man5/issue.net.5

二:find命令:

功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。

  语法:find 起始目录 寻找条件 操作

  说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。

  该命令提供的寻找条件可以是一个用逻辑运算符not、and、or组成的复合条件。逻辑运算符and、or、not的含义为:

  (1)and:逻辑与,在命令中用“-a”表示,是系统缺省的选项,表示只有当所给的条件都满足时,寻找条件才算满足。例如:

  $ find –name ’tmp’ –xtype c -user ’inin’

  该命令寻找三个给定条件都满足的所有文件。

  (2)or:逻辑或,在命令中用“-o”表示。该运算符表示只要所给的条件中有一个满足时,寻找条件就算满足。例如:

  $ find –name ’tmp’ –o –name ’mina*’

 

  该命令查询文件名为’tmp’或是匹配’mina*’的所有文件。

  (3)not:逻辑非,在命令中用“!”表示。该运算符表示查找不满足所给条件的文件。例如:

  $ find ! –name ’tmp’

  该命令查询文件名不是’tmp’的所有文件。

  需要说明的是:当使用很多的逻辑选项时,可以用括号把这些选项括起来。为了避免Shell本身对括号引起误解,在话号前需要加转义字符“”来去除括号的意义。

  例:$ find (–name ’tmp’ –xtype c -user ’inin’ )

  寻找条件有以下选项:

  首先,下列各个选项中的n值可以有三种输入方式,假设n为20,则:

  +20 表示20以后(21,22,23等)

  -20 表示20以前(19,18,17等)

  20 表示正好是20

  1. 以名称和文件属性查找。

  - name ’字串’ 查找文件名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。

  - lname ’字串’ 查找文件名匹配所给字串的所有符号链接文件,字串内可用通配符*、?、[ ]。

  -gid n 查找属于ID号为n的用户组的所有文件。

  -uid n 查找属于ID号为n的用户的所有文件。

  -group ’字串’ 查找属于用户组名为所给字串的所有的文件。

  -user ’字串’ 查找属于用户名为所给字串的所有的文件。

  -empty 查找大小为0的目录或文件。

  -path ’字串’ 查找路径名匹配所给字串的所有文件,字串内可用通配符*、?、[ ]。

  -perm 权限 查找具有指定权限的文件和目录,权限的表示可以如711,644。

  -size n[bckw] 查找指定文件大小的文件,n后面的字符表示单位,缺省为b,代表512字节的块。

  -type x 查找类型为x的文件,x为下列字符之一:

  b 块设备文件

  c 字符设备文件

  d 目录文件

  p 命名管道(FIFO)

  f 普通文件

  l 符号链接文件(symbolic links)

  s socket文件

  -xtype x 与-type基本相同,但只查找符号链接文件。

  2. 以时间为条件查找

  - amin n 查找n分钟以前被访问过的所有文件。

  - atime n 查找n天以前被访问过的所有文件。

  - cmin n 查找n分钟以前文件状态被修改过的所有文件。

  - ctime n 查找n天以前文件状态被修改过的所有文件。

  - mmin n 查找n分钟以前文件内容被修改过的所有文件。

  - mtime n 查找n天以前文件内容被修改过的所有文件。

3. 可执行的操作

  - exec 命令名称 {} 对符合条件的文件执行所给的Linux 命令,而不询问用户是否需要执行该命令。{}表示命令的参数即为所找到的文件;命令的末尾必须以“ ;”结束。

  - ok 命令名称 { } 对符合条件的文件执行所给的Linux 命令,与exec不同的是,它会询问用户是否需要执行该命令。

  - ls 详细列出所找到的所有文件。

  - fprintf 文件名 将找到的文件名写入指定文件。

  - print 在标准输出设备上显示查找出的文件名。

  - printf 格式 格式的写法请参考有关C语言的书。

  例1:查找当前目录中所有以main开头的文件,并显示这些文件的内容。

  $ find . - name ‘main*’ - exec more {} ;

  例2:删除当前目录下所有一周之内没有被访问过的a .out或*.o文件。

  $ find . (- name a.out - o - name ‘*.o’)

  > - atime +7 - exec rm {} ;

  说明如下:

  命令中的“.”表示当前目录,此时find将从当前目录开始,逐个在其子目录中查找满足后面指定条件的文件。(和)表示括号(),其中的“”称为转义符。之所以这样写是由于对Shell而言,(和)另有不同的含义,而不是这里的用于组合条件的用途。“- name a.out”是指要查找名为a.out的文件;“-
name ‘*.o’”是指要查找所有名字以 .o结尾的文件。这两个- name之间的- o表示逻辑或(or),即查找名字为a.out或名字以 .o结尾的文件,find在当前目录及其子目录下找到这佯的文件之后,再进行判断,看其最后访问时间是否在7天以前(条件-atime +7),若是,则对该文件执行命令rm(- exec rm{ };)。其中{ }代表当前查到的符合条件的文件名,;则是语法所要求的。上述命令中第一行的最后一个是续行符。当命令太长而在一行写不下时,可输入一个,之后系统将显示一个>,指示用户继续输入命令。

时间: 2024-10-06 01:48:42

linux的locate命令和find命令的区别的相关文章

Linux使用locate命令定位文件

全文节选翻译自:http://linux-blog.org/finding-files-with-locate/ FIND命令 很多Linux用户喜欢使用find命令来查找文件,例如他们通常喜欢这样做: find / -name 'pattern' 确实find的强大功能不仅仅用来查找文件,它能用来定位更加细节的东西,比如你想在某个目录下找到一些赋予其拥有者和管理员可写的权限( if you wanted to find files which are writable by both thei

Linux学习笔记--locate命令(文件搜索命令)

locate,定位的意思,作用是让使用者可以快速的搜寻系统中是否有指定的文件. locate 命令特点: 1) "locate"的速度比"find"快,因为它并不是真的查找文件,而是查数据库. 2) 新建的文件,我们立即用"locate"命令去查找,一般是找不到的, 因为数据库的更新不是实时的,数据库的更新时间由系统维护. 3) "locate"命令所搜索的后台数据库在"/var/lib/mlocate"这

Linux下的五个查找命令:grep、find、locate、whereis、which

1.grep grep(General Regular Expression Parser,通用规则表达式分析程序)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 它的使用语法为: grep [选项] pattern [文件名] . 匹配任意一个字符* 匹配0 个或多个*前的字符^ 匹配行开头$ 匹配行结尾[] 匹配[ ]中的任意一个字符,[]中可用 – 表示范围,例如[a-z]表示字母a 至z 中的任意一个\ 转意字符命令中的选项为:-b 显示块号-c 仅显示各指

Linux的 locate 和 find命令

一:locate命令 locate命令用于查找文件,它比find命令的搜索速度快,它需要一个数据库,这个数据库由每天的例行工作        (crontab)程序来建立.当我们建立好这个数据库后,就可以方便地来搜寻所需文件了. 即先运行:updatedb(无论在那个目录中均可,可以放在crontab中 )后在   /var/lib/slocate/ 下生成                 slocate.db 数据库即可快速查找.在命令提示符下直接执行#updatedb 命令即可: 例如:查找

Linux命令之locate、find搜索命令

locate命令用于查找文件,比find命令的搜索速度快,它有一个数据库,这个数据库每天的例行工作(crontab)程序来执行updatedb.运行:updatedb在/var/lib/slocate/ 下生成 slocate.db 数据库即可快速查找. 示例:现场拷贝/etc/grub2.cfg到/tmp/grub2.cfg,这时如果不更新数据库,用locate搜索grub2.cfg是无法搜索到/tmp/下的grub2.cfg的 find语法:find pathname -options [-

Linux运维基本知识与命令

1,Linux系统管理员账户?root2,[[email protected] ~]#  解释每一个部分的意思root 帐户svr5 主机名~    所在目录/root3,Linux系统有哪几个TTY控制台TTY1-6 字符界面TTY7 图形界面4,如何查看内核,并解释每一个部分的意思# uname -r2.6.18-371.el5主版本号 2次版本号 6修订版本号 18红帽修订    3715,查看系统具体属于RedHat哪一个版本# cat /etc/redhat-release Red H

Linux下的文件查找类命令(转载)

如何快速有效的定位文件系统内所需要查找的文件呢?Linux为我们提供了一些文件查找类的命令,我们需要掌握以下几个命令: http://blog.csdn.net/sailor201211/article/details/53290470 which 命令which会依照用户的PATH环境变量查找一个外部命令对应的可执行文件的路径.如: $ which gcc /usr/bin/gcc whereis 和which命令相比,whereis命令则可以定位一个外部命令的二进制文件.源代码文件及用户手册

Linux自学第二天(权限管理命令、文件搜索命令、帮助命令)

添加用户两步走:1.useradd username   2.passwd ps  权限管理命令 命令名称:chmod  ->>change the permissions mode of a file 命令所在路径:/bin/chmod 执行权限:所有用户 语法:chmod [{u g o} {+-=}{rwx}][文件或目录] [mode = 421] [文件或目录] +:增加权限 -:减少权限 =:直接赋予权限 掌握的重点是用数字的方式进行权限控制,r=4 w=2 x=1. rwxr-x

Linux文件和目录管理常用命令(中)

ln 命令 描述:ln命令用来为文件创建连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接.如果要创建符号连接必须使用"-s"选项. 注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的. 语法:ln(选项)(参数) 常用选项: -b或--backup              删除,覆盖目标文件之前的备份: -d或-F或--directory     建立目录的硬连接: -f或--force             强