课程内容
1、文件查找之find命令详解
2、文件特殊权限详解
3、linux中的任务计划实现详解
4、facl及while和until循环
一、文件查找:根据文件各种属性找到相对应文件的过程。
文本搜索:文件查找和文本搜索的区别是什么?
grep,egrep,fgrep 这些是字符串的匹配的查找,本来grep是不能找文件本身的。grep集合管
道来实现文件查找。
文件查找:locate,find
非实时查找:根据数据库或者索引来查找 (locate),依赖于索引,而索引构建相当 占用资源,索引的创建是在系统空闲是有系统自动进行(每天执行的任务);
手动执行使用updatedb命令。查找速度快,非精准查找。
实时查找:遍历所有文件进行条件匹配 (find)
精准查找、精确匹配、速度慢
find [option]...[查找路径][查找条件][处理动作]
查找路径:默认为当前目录
查找条件:默认为指定路径下的所有文件
处理动作:默认为显示在屏幕
查找条件:-name"文件名称":支持使用globbing字符(*、?、[]、[^])
-iname"文件名称":支持globbing,忽律字符大小写
-user username:根据文件的属主查找
-group groupname :根据文件的属组查找
-UID -GID:根据用户ID号查找
注意:删除一个用户后,其属主、属组还有ID号,可以使用UID GID查找。
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
组合条件查找:与:-a 同时满足,或:-o 满足一个条件,非:-not,!,条件取反
-not A -a -not B = -not (A -o B)
-not A -o -not B = -not (A -a B)
举例:find /etc -not -user root -a -name "p*[0-9]*" -ls ;find /etc -user root
根据文件类型查找:-type TYPE
f:普通文件
d:目录文件
l:符号链接
b:块设备
c:字符设备
s:套接字文件
p:命名管道
-size [+|-]#UNIT 常用单位: k, M, G
#UNIT: #-1 < x <= #
-#UNIT: x <= #-1
+#UNIT: x > #
根据时间戳查找:以“天”为单位
-atime [+|-]#
+#:x >= #+1
-#:x < #
#: # <= x < #+1
-mtime
-ctime
以“分钟”为单位
-amin
-mmin
-cmin
根据权限查找:
-perm [+|-]MODE
MODE: 与MODE精确匹配
find ./ -perm 644
+MODE: 任何一类用户的权限只要能包含对其指定的任何一位权限即可;以属主为例,
find ./ -perm +222
-MODE:每类用户指定的检查权限都匹配:
为三类用户所有指定的检查权限都能够被包含
find ./ -perm -222
处理动作:
-print: 默认处理动作,显示
-ls:类似于ls -l
-exec COMMAND {} \;
-ok COMMAND {} \;
find: 一次性查找符合条件的所有文件,并一同传递给给-exec或-ok后面指定的命令;但,有些命令不能接受过长的参数;此时使用另一种方式
find | xargs COMMAND
总结:find [查找路径] [查找条件] [处理动作]
查找条件:
-name, -iname, -user, -group, -uid, -gid, -nouser, -nogroup, -type, -size, -atime, -mtime, -ctime, -amin, -mmin, -cmin, -perm
组合:-a, -o, -not