Linux文件查找find和locate
目
录
locate文件查找
概述
安装
yum install -y mlocate
locate
-c:符合条件的文件数量
-b:基名查找(按文件名称关键字查找,而不是文件路径关键字)
locate依赖于事先构建好的索引库
系统自动实现(周期性)
手动更新数据库(updatedb)
locate文件查找的特性
1、查找速度快
2、模糊查找
3、不是实时更新
文件查找概述
Linux系统中的find命令在查找文件是非常有用而且方便
他可以根据不同条件来进行查找文件:例如权限,拥有者,修改时间,文件大小等等。同时find是linux下必须掌握的。
find命令的基本语法如下:
|
命令 |
选项 |
路径 |
表达式 |
动作 |
|
find |
[options] |
[path] |
[expression] |
[action] |
文件名查找
-name:区分大小写
-iname:忽略大小写
通配符:*和? *:匹配多个任意字符 ?:匹配一个任意字符
-regex:基本正则表达式模糊查找文件,匹配是整个路径,而非其名;
区分大小写
[root@oldboy pubilc]# find /pubilc/ -name "ifcfg-ens33"
/pubilc/ifcfg-ens33
不区分大小写
[root@oldboy pubilc]# find /pubilc/ -iname "ifcfg-ens33"
/pubilc/ifcfg-ens33
/pubilc/IFCFG-ENS33
文件大小查找
-size[+|-] #UNIT
常用单位:k、m、g
查找大于10m的文件
[root@oldboy pubilc]# find /pubilc/ -size +10M -ls
33587283 15360 -rw-r--r-- 1 root root 15728640 8月 23 16:22 /pubilc/file3.txt
33587284 12288 -rw-r--r-- 1 root root 12582912 8月 23 16:23 /pubilc/file2.txt
查找等于10M的文件
[root@oldboy pubilc]# find /pubilc/ -size 10M -ls
33587282 10240 -rw-r--r-- 1 root root 10485760 8月 23 16:21 /pubilc/file1.txt
查找小于10M的文件
[root@oldboy pubilc]# find /pubilc/ -size -10M -ls
33587264 0 drwxr-xr-x 4 root root 111 8月 23 16:22 /pubilc/
51095307 0 drwxr-xr-x 2 root root 6 8月 23 16:11 /pubilc/ifcfg-ens33
619630 0 drwxr-xr-x 2 root root 6 8月 23 16:11 /pubilc/IFCFG-ENS33
33587281 6144 -rw-r--r-- 1 root root 6291456 8月 23 16:21 /pubilc/file.txt
时间戳查找
以"天"为单位
-atime[-|+]#
#:之前第#天的文件
-#:七天内的文件
+#:七天之前的文件
以分钟为单位:
-amin:
-mmin
-cmin:
创建文件测试文件
[root@oldboy pubilc]# for i in {01..31};do date -s 201808$i && touch file-$i;done
查找20以前的文件
[root@oldboy pubilc]# find /pubilc/ -atime +20 -ls
33587281 0 -rw-r--r-- 1 root root 0 8月 1 00:00 /pubilc/file-01
33587282 0 -rw-r--r-- 1 root root 0 8月 2 00:00 /pubilc/file-02
33587283 0 -rw-r--r-- 1 root root 0 8月 3 00:00 /pubilc/file-03
33587284 0 -rw-r--r-- 1 root root 0 8月 4 00:00 /pubilc/file-04
查找5天以内的文件
[root@oldboy pubilc]# find /pubilc/ -atime -5 -ls
33587264 4 drwxr-xr-x 2 root root 4096 8月 31 00:00 /pubilc/
33588261 0 -rw-r--r-- 1 root root 0 8月 27 00:00 /pubilc/file-27
33588262 0 -rw-r--r-- 1 root root 0 8月 28 00:00 /pubilc/file-28
33588263 0 -rw-r--r-- 1 root root 0 8月 29 00:00 /pubilc/file-29
33588264 0 -rw-r--r-- 1 root root 0 8月 30 00:00 /pubilc/file-30
33588265 0 -rw-r--r-- 1 root root 0 8月 31 00:00 /pubilc/file-31
查找前5天,当天的文件
[root@oldboy pubilc]# find /pubilc/ -atime 5 -ls
33588260 0 -rw-r--r-- 1 root root 0 8月 26 00:00 /pubilc/file-26
文件从属关系查找
-user:查找属主指定用户的所有文件;
-group:查找属组指定组的所有文件;
-uid:查找属主指定UID的所有文件
-gid:查找属组指定的GID的所有文件
-nouser:查找没有属主的文件;
nogroup:查找没有属组的文件;
查找属主是oldboy的文件
[root@oldboy pubilc]# find / -user oldboy 2>/dev/null
28341 4 -rw-rw-r-- 1 oldboy oldboy 445 8月 22 21:11 /home/oldboy/2.txt
619618 0 -rw-rw-r-- 1 oldboy oldboy 0 8月 22 21:21 /home/oldboy/ab
451578 4 -rw-rw-r-- 1 oldboy oldboy 93 8月 22 21:32 /home/oldboy/ping.sh
451575 4 -rw------- 1 oldboy oldboy 2427 8月 22 21:32 /home/oldboy/.viminfo
查找属组是oldboy的文件
[root@oldboy pubilc]# find / -group oldboy -ls
28318 12 -rw------- 1 oldboy oldboy 12288 8月 22 10:01 /home/oldboy/.123.swp
28319 0 -rw-rw-r-- 1 oldboy oldboy 0 8月 22 21:21 /home/oldboy/1.txt
28341 4 -rw-rw-r-- 1 oldboy oldboy 445 8月 22 21:11 /home/oldboy/2.txt
查找UID是的文件
[root@oldboy pubilc]# find / -uid 1000 -ls 2>/dev/null
25716 4 -rw-r--r-- 1 oldboy oldboy 231 4月 11 08:53 /home/oldboy/.bashrc
25719 4 -rw------- 1 oldboy oldboy 1115 8月 22 21:50 /home/oldboy/.bash_histo
查找GID是的文件
[root@oldboy pubilc]# find / -gid 1000 -ls 2>/dev/null
25714 4 -rw-r--r-- 1 oldboy oldboy 18 4月 11 08:53 /home/oldboy/.bash_logout
25715 4 -rw-r--r-- 1 oldboy oldboy 193 4月 11 08:53 /home/oldboy/.bash_profi
查找没有属主的文件
[root@oldboy pubilc]# find / -nouser 2>/dev/null -ls
619630 0 -rw-rw---- 1 1002 mail 0 8月 31 00:08 /var/spool/mail/aaa
17563463 0 drwx------ 2 1002 1002 62 8月 31 00:08 /home/aaa
17563476 4 -rw-r--r-- 1 1002 1002 18 4月 11 08:53 /home/aaa/.bash_logout
17563511 4 -rw-r--r-- 1 1002 1002 193 4月 11 08:53 /home/aaa/.bash_profile
17563512 4 -rw-r--r-- 1 1002 1002 231 4月 11 08:53 /home/aaa/.bashrc
33587290 0 -rw-r--r-- 1 1002 1002 0 8月 10 00:00 /pubilc/file-10
33574983 0 -rw-r--r-- 1 1002 1002 0 8月 16 00:00 /pubilc/file-16
查找没有属组的文件
[root@oldboy pubilc]# find / -nogroup 2>/dev/null -ls
17563463 0 drwx------ 2 1002 1002 62 8月 31 00:08 /home/aaa
17563476 4 -rw-r--r-- 1 1002 1002 18 4月 11 08:53 /home/aaa/.bash_logout
17563511 4 -rw-r--r-- 1 1002 1002 193 4月 11 08:53 /home/aaa/.bash_profile
17563512 4 -rw-r--r-- 1 1002 1002 231 4月 11 08:53 /home/aaa/.bashrc
33587290 0 -rw-r--r-- 1 1002 1002 0 8月 10 00:00 /pubilc/file-10
33574983 0 -rw-r--r-- 1 1002 1002 0 8月 16 00:00 /pubilc/file-16
文件类型查找
-type
f:普通文件
d:目录文件
l:链接文件
c:字符设备文件
p:管道文件
b:块设备文件
普通文件
find /public -type f
目录
find /public -type d
链接文件
find /public -type l
管道文件
find /run -type p
块设备
find /dev -type b
字符设备
find /dev -type c
套接字文件
find /dev -type s
权限查找
-perm [/|-] mode
mode:精确权限匹配;
/mode:任何一类用户(g、u、o)的权限中的任何一位(r、w、x)符合条件即满足;
9位权限位之间存在"或"关系;
-mode:每一类用户(g、u、o)的权限中的每一位(r、w、x)同时符合条件即满足;
9位权限位之间存在"与"关系;
完全匹配444权限
拥有者至少有r— 组至少有r—其他人至少有r--
[root@oldboy pubilc]# find /pubilc/ -perm -444 -ls
组合查找
与:-a(默认)
或:-o
非:-not,!
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
在/public目录下查找属于属于oldboy用户并且属于oldgirl组的文件
[root@oldboy pubilc]# find /pubilc/ -user oldboy -a -group oldgirl -ls
33587284 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 4 00:00 /pubilc/file-04
33587285 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 5 00:00 /pubilc/file-05
33587286 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 6 00:00 /pubilc/file-06
33587287 0 -rw-r--r-- 1 oldboy oldgirl 0 8月 7 00:00 /pubilc/file-07
在/public目录下查找属于oldboy或者属于oldgirl的文件
[root@oldboy pubilc]# find /pubilc/ -user oldboy -o -user oldgirl -ls
33587288 0 -rw-r--r-- 1 oldgirl oldboy 0 8月 8 00:00 /pubilc/file-08
处理动作
当查找到一个文件后,需要对文件进行处理
-print:输出到标准输出,默认的动作;
-ls:类似于对查找的文件执行"ls -l"命令,输出文件的详细信息;
-delete:删除查找到的文件;
-fls:/PATH/TO/SOMETILE:把查找到的所有文件的长格式信息保存至指定文件中;
-ok COMMAND {} \; :对查找的每个文件执行有COMMAND表示的 命令,每次操作都由用户进行确认;
-exec COMMAND {} \; :对查找的每个文件执行由COMMAND表示的命令,不需要确认;
打印查询到的文件
[root@oldboy pubilc]# find /pubilc/ -name "file-*"
/pubilc/file-01
/pubilc/file-02
/pubilc/file-03
[root@oldboy pubilc]# find /pubilc/ -name "file-*" -print
/pubilc/file-01
/pubilc/file-02
/pubilc/file-03
拷贝文件
[root@oldboy pubilc]# find /etc/sysconfig/ -name "ifcfg-ens33" -exec cp {} ./ \;
[root@oldboy pubilc]# find /etc/sysconfig/ -name "*ens33" -ok cp {} ./ \;
< cp ... /etc/sysconfig/network-scripts/ifcfg-ens33 > ? y
删除文件
[root@oldboy pubilc]# find /pubilc/ -name "file-01" -exec rm {} \;
本地文件保留最近7天的备份,备份服务器保留3个月
[root@oldboy pubilc]# find /pubilc/ -mtime +7 -delete
[root@oldboy pubilc]# find /pubilc/ -mtime +30 -delete
Linux文件查找find和locate的更多相关文章
- linux文件查找-find和locate
一.find 使用语法:find [查找目录] [查找规则] [查找完后执行的action] find是根据具体目录进行搜索 1.查找目录 如果不指定查找目录,默认在当前目录下进行查找 如果需要 ...
- linux文件查找(find,locate)
文件查找: locate: 非实时,模糊匹配,查找是根据全系统文件数据库进行的: # updatedb, 手动生成文件数据库 速度快 find: 实时 精确 ...
- Linux文件查找命令find用法整理(locate/find)
Linux文件查找查找主要包括:locate和find 1.locate 用法简单,根据数据库查找,非实时,用法: locate FILENAME 手动更新数据库(时间可能较长) updatedb 2 ...
- linux 文件查找,which,whereis,locate,find
linux 文件查找,which,whereis,locate,find 一:which 主要用于查找可执行命令的所在位置: 如图,查找命令 ls的目录: 二:whereis 主要用于查找命令的帮助文 ...
- Linux文件查找.md
Linux 文件查找 在Linux系统的查找相关的命令: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称 w ...
- linux文件查找find命令
linux文件查找find命令 1.文件查找 基本介绍 在文件系统上查找符合条件的文件 linux上常见的文件查找工具:find命令 查找分类 实时查找 精确查找 基本语法 find [option ...
- Linux文件查找命令find,xargs详述【转】
转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Li ...
- Linux学习总结(十五)文件查找 which whereis locate find
which命令 用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录.which指令会在环境变量$PATH设置的目录里查找符合条件的文件.也就是说,使用which命令,就 ...
- Linux文件查找命令具体解释-which whereis find locate
原创BLog.转载请注明出处 http://blog.csdn.net/hello_hwc? viewmode=contents which命令 首先查看man which的说明 which - sh ...
随机推荐
- 用AntDeploy如何更新Agent
AntDeploy AntDeploy是一款开源的一键发布部署工具,目的是代替重复性的发布动作,提高部署效率 1.一键部署iis 2.一键部署windows服务 3.一键部署到Docker 4.支持增 ...
- ubuntu 直接用软件的名字启动非apt安装的软件
方法一: 可以在.bashrc文件中加入 alias命令,把软件的名字就等于软件执行文件的绝对路径 方法二: 在/usr/bin 目录下为执行文件创建软链接(未尝试)不过应该可以 软件自启动的方法 在 ...
- docker系列(一):docker基础与安装笔记
1 什么是docker docker是基于GO语言编写的开源容器项目,诞生于2013年初,到目前为止,已经经历了6年的发展演变.现如今,docker已经非常火爆,特别是在一线IT企业,部署.运维等工作 ...
- Almost Acyclic Graph Codeforces - 915D
以前做过的题都不会了.... 此题做法:优化的暴力 有一个显然的暴力:枚举每一条边试着删掉 注意到题目要求使得图无环,那么找出图上任意一个环,都应当要在其某一处断开(当然没有环是YES) 因此找出图中 ...
- 3个解析url的php函数
通过url进行传值,是php中一个传值的重要手段.所以我们要经常对url里面所带的参数进行解析,如果我们知道了url传递参数名称,例如 /index.php?name=tank&sex=1#t ...
- mongoDB内置文档定义
在最近的设计数据库时,犯了一个低级的错误,就是设置内置文档是定义了错误了,导致数据取不出,去找了很多资料都无法解决.最后看了一了一下自己设置的model文件.配置错误,所以导致数据取不出了. 数据库时 ...
- AJPFX总结jvm运行时内存分布
jvm的运行过程中将java程序运行时数据区分为以下几个部分: (1)程序计数器:存储虚拟机字节码执行的地址 (2)java虚拟机栈:java方法运行时的局部变量表,操作数栈,方法出口等 ( ...
- 构建微服务开发环境6————利用npm安装前端框架
[内容指引] 安装JQuery组件: 安装BootStrap前端框架; 安装AngularJs前端框架: 安装angular动画模块: 安装angular的ui-router模块. 一.进入下载的目标 ...
- #pragma使用分析
#pragma简介 #pragma用于指示编译器完成一些特定的动作 #pragma所定义的很多指示字是编译器特有的 #pragma在不同的编译器间是不可移植的 预处理器将忽略它不认识的#pragma指 ...
- 十个 JDBC 的最佳实践
JDBC是Java为多种关系型数据库提供的统一的访问接口,以下是我长期使用JDBC总结的十个最佳实践. 1. 使用PrearedStatement 任何一个使用过JDBC的Java程序员几乎都知道这个 ...