find
要使实验效果更加明显,先在/mnt下建立了一些文件,
并修改了他们的权限及所有人和所在组。
用watch -n 1 ls -lR /mnt/ 监控/mnt中的文件,方便观察
使用find命令按名称进行文件的查找
find命令用来查找指定的文件,其用法如下:
1.find -name 根据文件名查找
find /etc/ -name passwd 查找/etc下名为passwd的文件
查找用户为student的文件如下:
find /mnt/ -user huige 参数解释:-user 根据用户查找
查找用户组为huijie的用户组
find /mnt/ -group huijie 参数解释:-group 根据用户组查找
既指定用户又指定用户组:
查找mnt中所有人为root且所有组为student的文件:
find /mnt/ -user root -group student
find /mnt/ -not -group student -user root 解释:-not 反向选择 查找mnt下所有人不是student 用户组不是root的文件
find /mnt/ -not -group student -o -user student 参数解释: -o 所有条件符合一个即可
find /mnt/ -not -user student -a -group student
-maxdepth 数字 参数解释:指定查找时的最大深度
-mindepth 数字 参数解释:指定查找时的最小深度
使用find命令按文件大小进行文件的查找
-size 大小 根据指定大小查找
-size +20k 查找超过20k的文件(k小写)
-size -20k 查找小与20k的文件
先分别截取文件file1,file2,file3,12k,20k,40k如下图:
查看三个文件大小:
使用find命令按文件类型进行文件的查找
-type 根据指定类型查找
-type d 查找目录
-type f 查找文件
-type l 查找连接
-type b 查找块
-type c 查找字符设备
使用find命令按文件修改时间进行文件的查找
-ctime 10 十天之内被修改的文件,如图没有匹配的文件
-ctime -10 小于十天被修改的文件
-ctime +10 被修改大于十天的文件
-cmin +|-10 查找 被修改大于或小于10分钟的文件
-cmin 10 查找10分钟内被修改的文件
使用find命令按文件权限大小进行文件的查找
指定权限并指定查找类型:
-perm 222 ugo位必须都是w
-perm -444 “-“ 表示 “与“ ugo位必须都含有r
-perm /444 “/” 表示 “或” ugo位至少有一位含有r
指定权限并指定查找类型:
find /mnt/ -perm 444 -type f
对find命令查出的文件进行处理
-exec commd 命令 { } \;
参数解释: { } :表示find的输出
-exec 后跟想要执行的动作
必须时空格后加\;
\:表示 对分号进行转义
find /mnt/ -perm 440 -exec chmod o-r {} \;
查找/mnt ugo位权限为440的文件(如下图符合条件的有file1和file2),并且将其o位权限变为r--
执行前
执行后
find /etc/ -name *.conf -exec cp -rp {} /mnt \;
查找/etc 下文件名含有conf 的文件,并把文件连同文件的权限一同备份到/mnt
find /mnt/ -name *.conf -exec rm -fr {} \; 查找/mnt 下文件名含有conf 的文件,并把文件删除
注意:这条命令不能在当前目录为mnt时用。