您的位置:首页 > 运维架构 > Linux

Linux文件查找命令及find详解

2016-11-12 19:22 399 查看

一、linux的文件查找工具

1、locate工具

2、find工具

二、locate命令

1、特点:

(1)依赖数据库(可以用update更新数据库,但费时长,现实企业环境最好不用)

(2)非实时查找,结果非精确

(3)查找速度快

(4)模糊查找

三、find命令

1、特点:

(1)实时查找,查找速度慢

(2)精确匹配

2、find命令格式:

# find [options] [查询路径] [查找条件] [处理动作]


(1)默认情况:

①查询路径:默认当前目录

②查找条件:默认为查找指定路径下的所有文件

③处理动作:默认为显示

(2)查找条件选项:

-name ‘FILENAME’:对文件名作精确匹配,文件名支持通配符匹配(globbing,{*,?,【】,【^】}),文件名有空格用“”括起。

-iname ‘FILENAME’:文件匹配时不区分大小写,同上支持globbing。

-regex PATTERN:基于正则表达式进行文件查找(文件名匹配)

-user USERNAME:根据文件属主查找

-group GROUPNAME:根据文件属组查找

-uid UID:根据文件的UID查找

-gid GID:根据文件的GID查找

上述两个选项的意义在于:如果用户或组被删除后,文件中包含的属主、属组的查找会被转换成对应的uid和gid查找

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

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

-type {f,d,c,b,l,p,s}:查找特定的文件类型

f:普通文件

d:目录

c:字符设备

b:块设备

l:符号链接文件

p:命名管道设备

s:套接字设备

-size [+|-] SIZE(大小)unit(单位):按文件大小查找

+表示大于,-表示小于

常用单位:

[+|-]#k

[+|-]#M

[+|-]#G

组合条件:

-a :与(and)

-o :或(or)

-not:非(not)

优先级:-not>-a>-o

非A或非B==非(A且B)

非A并非B==非(A或B)

⑬按时间戳查找:-{m,c,a}{time,min} [+|-]#

以天为单位:

-mtime #:表示过去第(#+1)天以后第#天以前的时间段被修改过的文件

-ctime #:表示过去第(#+1)天以后第#天以前的时间段被改变过的文件

-atime #:表示过去第(#+1)天以后第#天以前的时间段被访问过的文件

以分钟为单位:

-mmin #:表示过去第(#+1)分钟以后第#分钟以前的时间段被修改过的文件

-cmin #:表示过去第(#+1)分钟以后第#分钟以前的时间段被改变过的文件

-amin #:表示过去第(#+1)分钟以后第#分钟以前的时间段被访问过的文件

上述均支持[+|-]#

+表示:过去第(#+1)天(分钟)以前被访问过

-表示:现在到过去第#天(分钟)以内被访问过

⑭按文件权限位查找:-perm [+|-]MODE(精确匹配,MODE为3位八进制数

+MODE:9位权限位中任意一位匹配即满足条件(任何一类用户任何一维权限匹配即可)–>常用于查找某类用户的某特定权限是否存在

-MODE:文件权限能完全包含MODE时才满足(每类用户的任何一位权限为匹配才满足)–>常用于查找某类用户包含哪些权限

没有符号:精确匹配权限位置

(3)处理动作:(默认为-print)

①-print:打印在标准输出上

②-ls:以长格式输出各文件信息

③-exec COMMAND {} \;:对查找的文件执行指定的命令

④-ok COMMAND:交互式的-exec

⑤find | xargs COMMAND:与exec功能相似,但需要通过管道将标准输入转换为命令。

例:find /tm p/test/ -perm -666 | xargs ls -l {}

find /etc/ -size +1M | xargs echo {} >> /tmp/etc.largefiles

{}是文件占位符代替查找到的文件的名称

-exec的好处:

例:find /tmp/test -perm -666 -exec {} {}x \;

可用于对搜索到的文件名进行二次或以上的引用,而xargs只能引用一次。

xargs的好处

可以对搜索到的文件名逐个处理
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux