视频作业:find命令详解
大纲:
1、什么是find
2、find能实现什么功能
3、为什么要使用find
4、如何使用find
5、find各参数详解
1、什么是find
find是linux 命令,它将档案系统内符合 expression(表达式) 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find 根 据下列规则判断 path 和 expression,在命令列上第一个 – ( ) , ! 之前的部分为 path,之后的是 expression。
简单的来说,find是用来实现查找功能的,可以根据不同的表达式与指定的路径来查找相对应的内容。
2、find能实现什么功能
首先,find能实现最基本的功能就是查找,在实现查找功能后可根据参数来实现追加操作,例如:将查找出来的数据删除、详细展示查找出来的数据等。
3、为什么要使用find
其实,能实现查询功能的命令还有locate,它的优点就是查询速度快,但是它非常依赖于事先构建好的索引库,如果索引库遭到破坏,就基本上丧失了其核心功能。而且它是非实时性的, 造成的后果就是不精确,对于数据吞吐量很大的环境查找新鲜数据非常有局限性。
而find虽然查询速度相较于locate比较慢,但是它是一款实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找,不依赖于索引库,适用于任何情况下,所以综合以上几 点,find确实是一款比较优秀的查询工具。
4、如何使用find
find功能非常强大,可将查询条件随意组合,而且在查询完毕后可根据追加操作来处理数据,具体格式如下:
find [查找路径] [查找条件] [追加操作]
注:如果不写路径,默认是查找当前目录下的所有文件及目录,
如果不写参数默认是根据文件名查找(-name)
5、find各参数详解
查找条件:可按照文件名、大小、类型、从属关系、权限等标准进行;
查找结果:结果只能为布尔型(真or假)
² 根据文件名查找:
-name:
-iname:不区分条件的大小写 (以上都支持通配符)
*,?、[]、[^] [[:digit:]] [[alpha]] ….
–regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非基名
注:如需使用通配符,请用双引号
² 根据文件从属关系查找:
-user: 查找属主指定用户的所有文件;
-group: 查找属组指定组的所有文件;
-uid: 查找属主指定UID的所有文件;
-gid : 查找属组指定的GID的所有文件
-nouser: 查找没有属主的文件
-nogroup: 查找没有属组的文件;
² 根据文件类型查找:
-type:
f:普通文件
l:符号链接文件
b:块设备文件
c:字符设备
p:管道文件
s:套接字文件
² 根据文件大小查找:
-size [+|-]#(K,M,G)
–size 10M: 查找10M的文件或文件夹
-size +10M: 查找大于10M的文件或文件夹
-size -10M: 查找小于10M的文件或文件夹
² 根据时间戳查找:
以天为单位:
-atime [+ | -]#: 查看访问目录或文件的时间;
-atime -7 :查看一周内被访问过的文件或目录;
-mtime [+ | -]#:查看修改过文件或目录的时间;
-mtime -7:查看一周内被修改过的文件或目录;
-ctime [+ | -]#: 查看元数据被修改过的目录或文件的时间;
-ctime -7 :查看一周内元数据被修改过的文件或目录;
注:元数据是指一个文件或目录的权限、从属关系、时间戳、等相关描素信息。
以分钟为单位:
-amin: [+ | -]#:
-mmin:[+ | -]#:
-cmin: [+ | -]#:
² 根据权限查找:
-perm:[mode |-mode |/mode]
mode:精确权限查找;八进制权限
-mode:任何每一类用户(u,g,o)的权限每一位(r,w,x)同时符合条件既满足; 每一类之间是and的关系;
/mode:任何用户的任意一位(u,g,o)只要符合指定的权限既满足(/666, 只要任何一位有w or r or x既满足。)
总结:【注: !代表取反,以2(代表写入权限)为例:】
-perm /222 只要任何一位有w既满足:
! -perm -222 只要任何一位没有w既满足: (叹横杠只没)
! -perm /222 所有位都没有w既满足 (叹斜杠所没)
-perm -222 所有位都有w既满足
组合测试:
与: -a 默认组合操作,代表同时满足 ~]#find /etc/ -name passwd (-a) -type f
或:-o:只需满足其中一个条件
非: ! -not
find / ! 条件一 -a !条件二 = find / ! \(条件一 -o 条件二 \)
find / ! 条件一 -o !条件二 = find / ! \(条件一 -a 条件二 \)
以上两种书写格式都成立
处理动作:
-print:输出至标准输出:默认动作;
-ls:类似于对查找到的文件执行ls –l 命令,输出文件的详细;
-delete:删除查找的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
-ok COMMAND {} \; : 对查找到的每个文件执行由COMMAND表示的命令;{}:占位符 (需要用户确认)
~]# find ./ -nouser -a –nogroup –ok chown root:root {} \;
-exec COMMAND {} \; :对查找到的每个文件执行又COMMAND表示的命令(无需用户确认)
原创文章,作者:N25_韩奇洋,如若转载,请注明出处:http://www.178linux.com/63838