博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux系统中文件定位与查找
阅读量:5815 次
发布时间:2019-06-18

本文共 2468 字,大约阅读时间需要 8 分钟。

Linux系统中文件查找

关键词 文件查找 | find | locate

本文主要介绍有关文件查找的两个命令——find和locate,以及压缩打包的命令——compress, gzip,bzip2,xz等。有问题或建议可发至邮箱VatheSee@163.com.

locate

locate命令是通过查询Linux系统上预先构建的文件索引数据库,准确说来,这个数据库默认的位置是/var/lib/mlocate/mlocate.db,这个数据库一般由系统定时周期性更新,当然也可以通过updatedb命令手动更新,但是花费的时间周期可能很长,尤其在文件系统占用率很高的情况下。

locate命令查找的特点:

查找速度快模糊查找非实时查找

命令格式及常用选项:

locate [OPTION]... PATTERN...        -h, --help      查看帮助文档          -i              忽略大小写搜索    -n  N           最多显示N个匹配项目 -r, --regexp 支持进行基本正则表达式匹配,默认支持glob统配符 --regex 支持使用扩展正则表达式 -c 统计搜索到匹配的条目,但不输出具体条目

find命令

相对于locate命令,find命令查找有如下特点

查询速度较快精确查找实时查找

语法:

find [-H] [-L] [-P] [-D  debugopts] [-Olevel] [path...] [expression] [-H] [-L] [-P] 三选项用来控制处理符号链接文件 [-D] 控制dubug [-O] 查询,设置优化等级

以上5个参数基本不用,如果需要使用,位置必须在路径[path]之前

常用格式:find [OPTION]... [查找路径] [查找条件] [处理动作]

查找路径:指定需要查找的目录,如果是当前目录,可用“.”代替

查找条件:指定查找标准,可以是文件名、大小、权限等

处理动作:对符合条件的文件进行操作,默认输出至屏幕

接下来详细介绍查找条件:

根据文件名查找

-name,      直接查找文件名,支持glob风格查找-iname,     不区分大小写,支持glob风格查找-regex,     支持正则表达式查找文件名-iregex,    不区分大小写,支持正则表达式查找文件名注意:如果对glob不了解,可以用man 7 glob查看

根据文件从属关系查找

-user,   	根据属主查找-group,     根据属组查找-uid        根据属主id查找-gid        根据属组id查找-nouser 判断是否属于无属主文件 -nogroup 判断是否属于无属组文件

根据文件类型查找

-type

常见文件类型有

f    	普通文件d       目录文件l       符号链接文件b       块文件c       字符设备文件p   	管道文件s   	套接字文件

以文件大小查找

-size[+|-]  UNIT	常用单位:k, M, G

以时间戳查找

以“天”为单位:	-atime[+|-]	-mtime	-ctime以“分钟”为单位:	-amin	-mmin -cmin

根据权限查找

-perm [/|-] mode	mode: 精确权限匹配	-mode	/mode: 任何一类用户的权限满足即可	+mode: 已废弃这种用法

处理动作

-print  输出至标准输出,默认的动作-ls 	类似于对查找的文件执行"ls -l"命令,输出文件的详细信息-delete 删除查找到的文件-fls file 把查找到的所有文件的长格式信息保存到指定文件 -ok CMD {} \; 执行CMD,执行前询问 -exec CMD {} \; 执行CMD

组合测试

各个条件之间默认是以“与”连接,如果需要使用其他组合测试,必须加上

-a      		与-o     		 	或-not, !    		非

德·摩根定律

(非 P) 或 (非 Q) = 非(P 且 Q)(非 P) 且 (非 Q) = 非(P 或 Q)

练习

1、查找/var目录下属主为root,且属组为mail的所有文件或目录;

# find /var -user root -group mail

2、查找/usr目录下不属于root、lp或gdm的所有文件或目录;

# find /usr -not -user root \-a -not -user lp -a -not -user gdm # find /usr -not \( -user root -o -user lp -o -user gdm \)

3、查找/etc目录下最周一周内其内容修改过,同时属主不为root,也不是postfix的文件或目录;

# find /etc -mtime -7 -a -not -user root -a -not -user postfix # find /etc/ -mtime -7 -a -not \( -user root -o -user postfix \)

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件或目录;

# find / \( -nouser -o -nogroup \) -a -atime -7# find / \( -atime -7 -nouser -o -nogroup \) -ls

5、查找/etc目录下大于1M且类型为普通文件的所有文件;

# find /etc -size +1M -type f

6、查找/etc目录下所有用户都没有写权限的文件;

# find /etc -not -perm 222 -type f -ls

转载于:https://www.cnblogs.com/vathe/p/6692268.html

你可能感兴趣的文章
WCF
查看>>
django 目录结构修改
查看>>
win8 关闭防火墙
查看>>
Android实例-录音与回放(播放MP3)(XE8+小米2)
查看>>
CSS——(2)与标准流盒模型
查看>>
MYSQL 基本SQL语句
查看>>
C#中的Marshal
查看>>
linux命令:ls
查看>>
Using RequireJS in AngularJS Applications
查看>>
hdu 2444(二分图最大匹配)
查看>>
shell编程笔记六:实现ll命令
查看>>
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>
[nodejs] nodejs开发个人博客(五)分配数据
查看>>
《Linux内核修炼之道》 之 高效学习Linux内核
查看>>
Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)
查看>>
30分钟Git命令“从入门到放弃”
查看>>
nginx : TCP代理和负载均衡的stream模块
查看>>
MYSQL数据库间同步数据
查看>>
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
查看>>
iOS 解决UITabelView刷新闪动
查看>>