linux文本查找工具之locate、find

一、文件查找分为两类:

1、非实时查找:locate

2、实时查找:find

二、非实时查找:locate

非实时查找:查找速度快、非精准查找、模糊查找

原因在于它不搜索具体目录,而是依赖于一个数据库( /var/lib/mlocate/mlocate.db ),这个数据库中含有本地所有文件信息,这个数据库是周期性更新,而不是实时更新,

所以查不到最新变动过的文件。所以使用locate查找文件时,先用updatedb,手动更新数据库。

locate:用来查找文件或目录

locate  [选项]  [参数]

选项:

-i 忽略大小写

例如:

[root@zq bin]# locate -i “.sh”

/etc/X11/xinit/xinitrc.d/00-start-message-bus.sh

/etc/X11/xinit/xinitrc.d/localuser.sh

-n N 显示匹配的指定的前N行

例如:

[root@zq bin]# locate -n 2 “.sh”

/etc/X11/xinit/xinitrc.d/00-start-message-bus.sh

/etc/X11/xinit/xinitrc.d/localuser.sh

[root@zq bin]#

-r 使用正则表达式的方式搜索文件

例如:

[root@zq bin]# locate -r “.* \ .sh”

/etc/X11/xinit/xinitrc.d/00-start-message-bus.sh

/etc/X11/xinit/xinitrc.d/localuser.sh

/etc/X11/xinit/xinitrc.d/xdg-user-dirs.s

三、实时查找:find

实时查找:精确查找、查找速度慢

原因在于它是通过遍历指定路径下的文件系统完成文件查找,非常消耗计算机资源。

find [选项]…[查找路径]   [查找条件]   [处理命令]

1、查找路径:

默认为当前目录

2、查找条件:

默认为指定路径下的所用文件

(1)查找条件

-name “文件名” (支持文件名通配)

:任意长度的任意字符

?:任意单个字符

[]: 匹配指定范围内的任意一个字符

[^]:匹配指定范围外的任意一个字符

常用的字符集:

[:lower:]:所有小写字母

[:upper:]:所有大写字母

[:alpha:]:所有字母

[:digit:]:所有数字

[:alnum:]:所有数字和字母

[:space:]:表示空白字符

[:punct:]:表示所有标点符号

例如:

[root@zq ~]# find /etc -name “[0-9][[:alpha:]]”

/etc/sysconfig/i18n

/etc/makedev.d/01v4l

-iname 文件名称忽略大小写

例如:

[root@zq bb]# find /root/bb -iname “a“

/root/bb/A

/root/bb/a

-inum n 根据inode来查找

例如:

[root@zq bb]# find /root/bb -inum 290716

/root/bb/a

[root@zq bb]# ls -i

290716 a  290717 A

-links n 根据链接数

例如:

[root@zq bb]# find /var/log -links 2 -ls

393172    4 drwx——   2 root     root         4096 Mar 16  2015 /var/log/ppp

403608    4 drwxr-xr-x   2 root     root         4096 Apr  8 10:09 /var/log/sa

-uid UID:根据UID查找文件

例如:

[root@zq bb]# find /etc/rc.d -uid 0 -ls

130654    4 drwxr-xr-x  10 root     root         4096 Mar 22 18:51 /etc/rc.d

130663    4 drwxr-xr-x   2 root     root         4096 Mar 22 19:03 /etc/rc.d/rc4.d

-gid GID:根据GID查找文件

例如:

[root@zq bb]# find /var/log -gid 0 -ls

393120    4 drwxr-xr-x  13 root     root         4096 Apr  8 10:10 /var/log

392026   52 -rw——-   1 root     root        46959 Apr  8 20:01 /var/log/cron

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

(2) 组合条件查找

-a:与  同时满足条件

-o:或  满足其中一个条件就行

-not:!非 条件取反

例如:

[root@zq bb]# find /usr -not ( -user root -o -user bin -o -user shutdown ) -ls

-rwsr-xr-x   1 abrt     abrt        10296 May 12  2016 /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache

(3)根据文件类型查找:

文件类型:

– :普通文件

d :目录文件

b :块设备文件

c :字符设备文件

p :管道文件

l :符号连接文件

s :套接字文件

例如:

[root@localhost ~]# find . -type d -ls

1048578    4 dr-xr-x—   5 root     root         4096 Apr  6 15:16 .

1068347    4 drwx——   3 root     root         4096 Apr  6 13:27 ./.dbus

1068348    4 drwx——   2 root     root         4096 Apr  6 13:27 ./.dbus/session-bus

1068350    4 drwx——   4 root     root         4096 Apr  6 13:44 ./.config

1068351    4 drwx——   3 root     root         4096 Apr  6 13:28 ./.config/ibus

(4) 根据文件大小查找

-size [-|+]#

常用单位:K M G

如:

5K :表示范围是 大于4K小于等于5K

-5K : 表示范围是 小于等于4K

+5K : 表示范围是 大于5K

例如:

[root@localhost ~]# find /var/log -size +1k -ls

132569    4 drwxr-xr-x  20 root     root         4096 Apr  8 06:11 /var/log

265195    4 drwx——   3 root     root         4096 Apr  6 13:14 /var/log/libvirt

278911    4 drwx——   2 root     root         4096 Nov 11 21:18 /var/log/libvirt/qemu

(5) 根据时间戳查找文件

以’天’为单位

-atime [-|+]#  根据访问时间查找

如:

5 :表示时间范围是 5<= # <6

-5 : 表示时间范围是 #<5   5天以内的

+5 :表示时间范围是 #=>6

-mtime :     根据修改时间查找

-ctime :     根据改变时间查找

例如:

[root@localhost ~]# find /var/log -mtime -7 -ls

132569    4 drwxr-xr-x  20 root     root         4096 Apr  8 06:11 /var/log

265195    4 drwx——   3 root     root         4096 Apr  6 13:14 /var/log/libvirt

148902    4 -rw——-   1 root     root          396 Apr  8 06:12 /var/log/maillog

265202    4 drwxr-xr-x   3 root     root         4096 Apr  6 13:13 /var/log/pluto

以“分钟”为单位

-amin   根据访问时间查找

-mmin   根据修改时间查找

-cmin   根据改变时间查找

(6) 根据权限查找

-perm [-|+] MODE

MODE:与MODE精确匹配查找

例如:

[root@localhost ~]# find /var/log -perm 644 -ls

131127   24 -rw-r–r–   1 root     root        23592 Apr  6 13:28 /var/log/Xorg.9.log

131517    4 -rw-r–r–   1 root     root           80 Apr  8 06:12 /var/log/wpa_supplicant.log

131076   16 -rw-r–r–   1 root     root        14310 Apr  8 06:11 /var/log/boot.log

-MODE:必须包含全部的MODE权限才可以

例如:

[root@zq bb]# find /root/bb/* -perm -644 -ls

290717    0 -rw-r–r–   1 root     root            0 Apr  8 19:59 /root/bb/A

290718    0 -rw-r–r–   1 root     root            0 Apr  8 20:55 /root/bb/c

290719    0 -rwxrw-rw-   1 root     root            0 Apr  8 20:55 /root/bb/d

+MODE: 只要有一个比如说属主 属组或者其他人有一个拥有MODE权限即可

例如:

[root@zq bb]# find /root/bb/* -perm +644 -ls

290716    0 -rw-r—–   1 root     root            0 Apr  8 19:59 /root/bb/a

290717    0 -rw-r–r–   1 root     root            0 Apr  8 19:59 /root/bb/A

290718    0 -rw-r–r–   1 root     root            0 Apr  8 20:55 /root/bb/c

290719    0 -rwxrw-rw-   1 root     root            0 Apr  8 20:55 /root/bb/d

3、 处理动作

-print:默认处理动作,显示到屏幕上

-ls   :类似于ls -l

-delete:删除查找到的文件;只删除文件,不能删除非空目录

-fls /PATH/TO/SOMEFILE:查找到的文件长格式信息保存到指定文件中

例如:

[root@zq bb]# find /root/bb/* -perm -644 -fls /tmp/findfile

[root@zq bb]# cat /tmp/findfile

290717    0 -rw-r–r–   1 root     root            0 Apr  8 19:59 /root/bb/A

290718    0 -rw-r–r–   1 root     root            0 Apr  8 20:55 /root/bb/c

290719    0 -rwxrw-rw-   1 root     root            0 Apr  8 20:55 /root/bb/d

-ok COMMAND {} \;对查找到的文件执行COMMAND命令,执行命令之前,跟用户进行交互确认。

例如:

[root@zq bb]# find /root/bb/* -perm -644 -ok stat {} \;

< stat … /root/bb/A > ? yes

File: /root/bb/A

Size: 0             Blocks: 0          IO Block: 4096   regular empty file

Device: 802h/2050d    Inode: 290717      Links: 1

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-04-08 19:59:51.535982828 +0800

Modify: 2017-04-08 19:59:51.535982828 +0800

Change: 2017-04-08 19:59:51.535982828 +0800

-exec COMMAND {} \; 对查找到的文件执行COMMAND命令,执行命令之前,不用跟用户进行交互确认。

例如:

[root@zq bb]# find /root/bb/* -perm -644 -exec stat {} \;

File: `/root/bb/A’

Size: 0             Blocks: 0          IO Block: 4096   regular empty file

Device: 802h/2050d    Inode: 290717      Links: 1

Access: (0644/-rw-r–r–)  Uid: (    0/    root)   Gid: (    0/    root)

Access: 2017-04-08 19:59:51.535982828 +0800

Modify: 2017-04-08 19:59:51.535982828 +0800

Change: 2017-04-08 19:59:51.535982828 +0800

工作环境常用:

工作环境中利用find查找文件,找到的文件很大(比如大于15T),然后对其做处理动作,很有可能造成进程中断而停止。

这时候我们可以利用xargs命令与find相结合来处理问题

xargs 将前面的find的查找结果分批次给后面的命令作为执行的参数。

例如:

[root@zq bb]#  find /var/log -name “*.log” | xargs ls -l

-rw——-. 1 root  root     5354 Mar 22 19:06 /var/log/anaconda.ifcfg.log

-rw——-. 1 root  root    22672 Mar 22 19:06 /var/log/anaconda.log

-rw——-. 1 root  root    47672 Mar 22 19:06 /var/log/anaconda.program.log

-rw——-. 1 root  root   250354 Mar 22 19:06 /var/log/anaconda.storage.log

-rw——-. 1 root  root   174890 Mar 22 19:06 /var/log/anaconda.yum.log

-rw——-. 1 root  root  3149433 Apr  8 21:20 /var/log/audit/audit.log

原创文章,作者:zq,如若转载,请注明出处:http://www.178linux.com/72835

linux的locate工具,linux文本查找工具之locate、find相关推荐

  1. 【linux基础】10、文件查找工具

    目录 locate find -name,-iname --regex -user,-group,-uid,gid,-nouser,-nogroup -type -size  -+      #-1 ...

  2. Linux基础(13)文本查找利器find的使用方法

    find(locate由于需要更新数据库,所以不怎么常用)是Linux下很强大的文件查找命令,具有如下特     点. 1.实时,新增的文件可以立即找到 2.精确 3.支持众多查找标准,根据用户的属主 ...

  3. linux迅雷替代工具_Linux中查找工具的友好替代品

    linux迅雷替代工具 fd是基于Rust的超快速替代品,可替代Unix / Linux find命令. 它不能反映find的所有强大功能: 但是,它确实提供了足够的功能来覆盖您可能遇到的80%用例. ...

  4. 【Linux学习】强大的文本分析工具AWK

    之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符. 调用AWK: 1.命令行 ...

  5. linux 查找文件 locate,linux文件查找(find,locate)

    文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 支持众多查找标准 遍历指定目录中的所有文件 ...

  6. 查找工具locate和find

    在工作中我们总是会去查找一些我们需要的内容,然而往往这些东西总是会被大量的数据隐藏.这个时候我们就需要一些查找工具来帮我们处理这些数据帮我们快速的找到我们需要的数据,在我们运维人员的工作过程中我们更须 ...

  7. ubuntu下文本标注工具BRAT全程离线安装

    1 Apache离线安装 1.1 软件下载 1.1.1 httpd文件 从http://httpd.apache.org/download.cgi下载httpd文件 1.1.2 apr文件 可到官网h ...

  8. linux定位到文件,locate 在linux下快速定位文档

    linux 下可以使用 locate 和 find 来查找文件,但是 locate 在定位时要比 find 快. 他们的区别: locate 并不是穿梭于档案文件中查找,而是在数据库查找文件. fin ...

  9. 2019-8-20 [Linux] 6.Shell的基本操作 查看 改变 列出 阅读开头/结尾 循环查看 阅读工具less 查找文件内容 文本分析工具AWK 文本编辑工具SED文件find 帮助man

    文章目录 6.linuxShell的基本操作 6.1 查看目录和文件 6.1.1 显示当前目录:pwd 6.1.2 改变目录:cd 6.1.3 列出目录内容:ls 1) 查看列表信息 以及详细信息 2 ...

最新文章

  1. 新闻发布项目——业务逻辑层(newsTbService)
  2. [LeetCode]--290. Word Pattern
  3. linux 脚本continue,shell中的break和continue
  4. 位图bitmap数据结构
  5. Objective-C语法汇总
  6. docker 安装 oracle12,Centos7下利用docker安装oracle12c
  7. 微型计算机的电池,具有微型计算机芯片的电池蓄电模块、便携式计算机的制作方法...
  8. (18)ISE14.7调试核名称与顶层名称不一致导致生成bit报error(FPGA不积跬步101)
  9. 数据结构实验 3.抓住那头牛
  10. 在线绘图(PS)(海报)
  11. Win7重装后修复Ubuntu引导项
  12. 复制pdf文字到word
  13. [frida] 01_食用指南(持续更新)
  14. 微信公众平台开发1-OAuth2.0网页授权(含源码)
  15. 字符串百分号 c语言,C语言 输出百分号(%)的方法
  16. 儒雅计算机导师,龙桂鲁:儒雅的学者,严慈的良师-清华大学新闻网
  17. 自动批量删除微博取消关注删除私信脚本
  18. 关键词搜索淘宝商品列表接口,关键词搜索接口,淘宝关键词搜索接口,item_search - 按关键字搜索淘宝商品列表接口,接口参数说明。
  19. idea 一直 performing vcs refresh
  20. c语言定积分区间微元面积,定积分的微元法.doc

热门文章

  1. C#LeetCode刷题之#28-实现strStr()(Implement strStr())
  2. 区块链原理设计与应用_我如何设计一个可以在6个月内吸引200K用户的区块链应用...
  3. 如何使用Docker在GitLab上设置CI
  4. Python3爬虫反反爬之搞定同程旅游加密参数 antitoken
  5. 让人想骂街的 Python 炫技操作:条件语句的七种写法
  6. scrapy —— ImagePipeline
  7. 一文搞定 Hive 表分隔符
  8. 单日课程超10万节!VIPKID 如何通过实时计算提升上课体验?
  9. Python colormap库的安装和使用
  10. MongoDB与python交互