Linux文件查找
2016-05-10 16:01
531 查看
在linux中,文件查找主要有两个命令:locate命令和find命令
一、locate命令
locate命令查找文件是基于全系统文件数据库进行的,文件数据库是非实时的,且其匹配类型为模糊匹配,locate命令相对于find唯一的优点是查找速度非常快
1、默认数据库文件位置
2、 常用参数
find 查找路径
查找标准 查找到以后的处理运作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
2、 匹配标准
☞ 文件名匹配
-name 'FILENAME':对文件名作精确匹配
也可以使用*,?,[]等通配符进行文件名匹配
[b]☞ 文件名匹配(不区分大小写)[/b]
-iname 'FILENAME': 文件名匹配时不区分大小写
☞ 正则匹配
-regex PATTERN:基于正则表达式进行文件名匹配
[b]☞ 用户名或用户组名匹配[/b]
-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找
[b]☞ 用户id或用户组id匹配[/b]
-uid UID: 根据UID查找
-gid GID: 根据GID查找
当用户被删除,所属该用户的所有文件的属主用户会变为该用户删除前的uid,此时根据-user是查找不到结果的,但是根据-uid依然可以找到结果
[b]☞ 匹配没有用户或组所属的文件[/b]
-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件
[b]☞ 匹配文件类型[/b]
-type 文件类型
f: 普通文件
d:目录
c:字符设备
b:块设备
l:链接文件
p:管道设备
s:套接字设备
☞ 匹配文件大小
-size [+|-] [ k | M | G ]
[b]☞ 根据文件时间属性查询(单位:天)[/b]
-mtime [+|-]天数: 修改时间
-ctime [+|-]天数: 改变时间
-atime [+|-]天数: 访问时间
[b]☞ 根据文件时间属性查询(单位:分钟)[/b]
-mmin [+|-]分钟数
-cmin [+|-]分钟数
-amin [+|-]分钟数
3、运作
[b]☞ 显示结果[/b]
-print: 显示 (默认)
[b]☞ 显示详细信息[/b]
-ls:类似ls -l的形式显示每一个文件的详细
[b]☞ 交由命令处理[/b]
-ok COMMAND {} \;
-exec COMMAND {} \;
{}为占位符(也代表查找的文件名,可做字符串拼接等操作),结尾一定要以\;结束,否则视为语法错误
区别:-ok每一次操作都需要用户确认,-exec不需要确认,
通常情况下,我们会把find查询到的结果通过管道传送给xargs命令进行处理
4、 组合多条件查询
-a and 与
-o or 或
-not 非
多条件查询默认为与条件 -a
locate命令查找文件是基于全系统文件数据库进行的,文件数据库是非实时的,且其匹配类型为模糊匹配,locate命令相对于find唯一的优点是查找速度非常快
1、默认数据库文件位置
/var/lib/mlocate/mlocate.db
2、 常用参数
[root@centos ~]# locate --help Usage: locate [OPTION]... [PATTERN]... Search for entries in a mlocate database. -b, --basename match only the base name of path names -c, --count only print number of found entries -i, --ignore-case ignore case distinctions when matching patterns -l, --limit, -n LIMIT limit output (or counting) to LIMIT entries -r, --regexp REGEXP search for basic regexp REGEXP instead of patterns --regex patterns are extended regexps -s, --stdio ignored, for backward compatibility -V, --version print version information -w, --wholename match whole path name (default)3、 更新数据库
[root@centos ~]# updatedb
二、搜索find命令
1、find命令格式find 查找路径
查找标准 查找到以后的处理运作
查找路径:默认为当前目录
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示
2、 匹配标准
☞ 文件名匹配
-name 'FILENAME':对文件名作精确匹配
也可以使用*,?,[]等通配符进行文件名匹配
[root@centos test]# find /etc/ -name passwd /etc/pam.d/passwd /etc/passwd [root@centos test]# find /etc/ -name passwd* /etc/pam.d/passwd /etc/passwd- /etc/passwd [root@centos test]# find /etc/ -name *passwd /etc/security/opasswd /etc/pam.d/passwd /etc/passwd [root@centos test]# find /etc/ -name *passwd* /etc/security/opasswd /etc/pam.d/passwd /etc/passwd- /etc/passwd
[b]☞ 文件名匹配(不区分大小写)[/b]
-iname 'FILENAME': 文件名匹配时不区分大小写
☞ 正则匹配
-regex PATTERN:基于正则表达式进行文件名匹配
[b]☞ 用户名或用户组名匹配[/b]
-user USERNAME: 根据属主查找
-group GROUPNAME: 根据属组查找
[root@centos ~]# find ./ -user storm # 查找当前目录下所属用户为storm的所有文件
[b]☞ 用户id或用户组id匹配[/b]
-uid UID: 根据UID查找
-gid GID: 根据GID查找
当用户被删除,所属该用户的所有文件的属主用户会变为该用户删除前的uid,此时根据-user是查找不到结果的,但是根据-uid依然可以找到结果
[b]☞ 匹配没有用户或组所属的文件[/b]
-nouser:查找没有属主的文件
-nogroup: 查找没有属组的文件
[root@centos test]# find ./ -nouser -ls 1066027 0 -rw-r--r-- 1 2527 2527 0 5月 10 19:20 ./no-user-file 1066028 4 drwxr-xr-x 2 2527 2527 4096 5月 10 19:20 ./no-user-dir
[b]☞ 匹配文件类型[/b]
-type 文件类型
f: 普通文件
d:目录
c:字符设备
b:块设备
l:链接文件
p:管道设备
s:套接字设备
☞ 匹配文件大小
-size [+|-] [ k | M | G ]
[root@centos ~]# find /etc -size 10k -ls # 精确查找大小为10k的文件(9k-10k之间都能匹配) [root@centos ~]# find /etc -size +10k -ls # 大于10k [root@centos ~]# find /etc -size -10k -ls # 小于10k
[b]☞ 根据文件时间属性查询(单位:天)[/b]
-mtime [+|-]天数: 修改时间
-ctime [+|-]天数: 改变时间
-atime [+|-]天数: 访问时间
[root@centos ~]# find ./ -mtime 5 #表示到此刻刚好5天访问的文件 [root@centos ~]# find ./ -mtime +5 #表示5天前访问的过的文件 [root@centos ~]# find ./ -mtime -5 #表示5天前到此刻访问过的文件
[b]☞ 根据文件时间属性查询(单位:分钟)[/b]
-mmin [+|-]分钟数
-cmin [+|-]分钟数
-amin [+|-]分钟数
3、运作
[b]☞ 显示结果[/b]
-print: 显示 (默认)
[b]☞ 显示详细信息[/b]
-ls:类似ls -l的形式显示每一个文件的详细
[b]☞ 交由命令处理[/b]
-ok COMMAND {} \;
-exec COMMAND {} \;
{}为占位符(也代表查找的文件名,可做字符串拼接等操作),结尾一定要以\;结束,否则视为语法错误
区别:-ok每一次操作都需要用户确认,-exec不需要确认,
通常情况下,我们会把find查询到的结果通过管道传送给xargs命令进行处理
4、 组合多条件查询
-a and 与
-o or 或
-not 非
多条件查询默认为与条件 -a
[root@centos ~]# find ./ -type f -a -user root -a -not -size 1k [root@centos ~]#find ./ -not \(-user user1 -o user user2\)
相关文章推荐
- Centos7 Samba服务器搭建
- Linux常用命令(三)文件操作--文件备份、压缩、定位、查找、阅读
- linux 查看文件夹下的文件个数(当前目录的文件数)
- 查看jar包文件、更新jar包文件
- Linux头文件路径之困惑
- linux 2>&1的含义
- centOS6.7下部署LAMP
- centos下删除名称为乱码的文件
- linux服务之maven
- 【Linux 学习笔记】戏说Git (上)
- linux基础(17)--使用GPT分区、扩展swap分区--RHEL6.5
- 【Linux远程管理】RDP协议远程管理
- RedHatLinuxRPM方式安装MySQL5.6
- AWS-EC2创建centOS6.7实例
- Linux 与 BSD 有什么不同?
- centos 6.7 ssh 免密码
- 查看centos版本
- centos上传下载文件
- linux的文件控制
- [Linux] Linux系统(文件操作)