Linux文件查找命令及find详解
一、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的好处 可以对搜索到的文件名逐个处理
