码迷,mamicode.com
首页 > 系统相关 > 详细

shell学习之locate和find命令

时间:2018-04-20 18:55:54      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:2

linux系统中有几个关于文件搜索的命令,例如:locate,wheris以及find在工作中比较常用到。.

1.locate命令:locate查找文件是基于/var/lib/mlocate数据库,该数据库包含所有的本地文件信息,Linux系统自动创建这个数据库,并且每天自动更新一次。本地刚创建一个文件,但使用locate命令搜索不到本地文件,需要使用updaetedb手动更新一下本地数据库。

[root@node-2 ~]# touch helloWorld
[root@node-2 ~]# locate helloWorld 
[root@node-2 ~]# updatedb
[root@node-2 ~]# locate helloWorld 
/root/helloWorld
[root@node-2 ~]# 
常用使用方法及参数:
locate  文件名称                              #会匹配出本地/var/lib/mlocate数据库中已经建立索引的包含文件名称的所有文件。
[root@node-2 ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-
[root@node-2 ~]# 

常用参数
-h --help                                                                                                               #显示帮助
-V  --version                                                                                                          #显示版本信息
-b, --basename         match only the base name of path names                     #只匹配路径名的基本名称
-c, --count               only print number of found entries                                    #只打印找到的条目数量
-e, --existing         only print entries for currently existing files                         #仅打印当前存在的文件的条目
-i, --ignore-case      ignore case distinctions when matching patterns             #忽略大小写
-w, --wholename        match whole path name (default)                                  #匹配整个路径名称(默认)

2.find命令:find命令可以在不通位置根据不同标准搜索任何文件,并支持多种方式处理搜索结果。其工作流程:(1)搜索所有用户指定的路径,包括所有的子目录。(2)对于遇到的每个文件,根据是否符合用户指定的条件,所有符合条件的文件形成一个列表。(3)对于结果列表的文件,执行用户指定的操作。

参数:
-name filename #表示包含指定匹配模式的文件名
-iname filename #表示包含指定匹配模式的文件名,不区分大小写
-type #指定文件类型,f表示普通文件 ,d表示目录,c表示块设备,p表示管道,l表示连接
-user userid #匹配其所有者为指定用户ID的文件
-group groupid #匹配其所有者的组为指定组ID的文件
-size size  #匹配其大小为size的文件
-empety   #匹配空文件
-amin[-+]n #文件最后一次访问时间,-n表示时间为n分钟以内,+n表示n分钟之前,n表示刚好n分钟
-atime [-+]n    #天
-cmin[-+]n    #文件最后一次状态改变时间
-ctime[-+]n   #
-mmin [-+]n  #最后一次被修改时间
-mtime [-+]n 
动作:
-print #默认动作,将搜索结果写入到标准输出
-fprint file #将搜索结果写入到file中
-ls #以详细格式展示搜索结果
-fls file #将详细格式结果写入file
-delete #将结果文件删除
-exec command {} \; #查找并执行命令,{}表示搜索到的文件名
-ok command {}\; #查找并执行命令,但是需要用户确认

列子,找到3分钟之前创建包含一个数字的文件并将其删除。

[root@node-2 home]# ll -rst
total 8
4 drwxr-xr-x. 2 root   root   4096 Mar 21 19:34 ISO
4 drwx------. 4 xguest xguest 4096 Mar 22 01:06 xguest
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file1[a-z].1
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file2[a-z].2
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file3[a-z].3
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file5[a-z].5
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file7[a-z].7
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file6[a-z].6
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file8[a-z].8
0 -rw-r--r--  1 root   root      0 Apr 20 17:07 file9[a-z].9
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text1.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text2.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 tex

[root@node-2 home]# find -type f -mmin +3 -iname "*[1-9]*" -exec rm -rf {} \;
[root@node-2 home]# ll -rst
total 8
4 drwx------. 4 xguest xguest 4096 Mar 22 01:06 xguest
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text1.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text2.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text3.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text4.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text5.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text6.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text9.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text8.txt
0 -rw-r--r--  1 root   root      0 Apr 20 17:27 text7.txt
4 drwxr-xr-x. 2 root   root   4096 Apr 20 17:28 ISO
[root@node-2 home]# 

shell学习之locate和find命令

标签:2

原文地址:http://blog.51cto.com/12013190/2105868

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!