find 命令 :在给定目录下查找符合给定条件的文件
find [ OPTIONS ] [ 查找起始路径 ] [ 查找文件] [ 处理动作]
一、参数
二、查找条件
1)根据名称查找
-name " 名称 "
find . -name "*.jpg"
2)根据从属关系查找
-user USERNAME:查找属主指定用户的所有文件;
-group GRPNAME:查找属组指定组的所有文件;
-uid UID:查找属主指定的UID的所有文件;
-gid GID:查找属组指定的GID的所有文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
例子:查找/usr 目录下不属于 root, alice或 jack 的所有文件或目录;
用两种方法;
~]# find /usr -not -user root -a -not -user alice -a -not -user
jack
~]# find /usr -not \( -user root -o -user alice -o -user jack \)
-ls
3)根据文件的类型查找
-type
find . -type d
.
4) 根据文件的大小查找
-size : K,M,G
例子:查找/etc 目录下大于 1M 且类型为普通文件的所有文件;
~]# find /etc -size +1M -type f -exec ls -lh {} \;
5)根据时间戳查找
例子、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件
或目录;
~]# find / \( -nouser -o -nogroup \) -atime -7 -ls
6)根据权限查找
- perm 匹配权限(mode 为完全匹配,-mode 为包含即可)
(1) 精确查找 匹配权限值完全相等
find . -perm 644
(2)/mode 匹配权限(mode 为完全匹配,-mode 为包含即可)
通俗说:就是属主拥有给定属主权限的某一个,或者数组拥有给定权限的某一个,或者其他用户拥有给定权限的某一个即可。
例子:查找/etc 目录下所有用户都没有写权限的文件;
~]# find /etc -not -perm /222 -type f -ls
(3)–mode。并且的关系。
通俗说:就是给定的属主权限必须拥有。并且给定的数组权限必须拥有。并且给定的其他用户权限必须拥有。
例子:查找/etc 目录至少有一类用户没有执行权限的文件;
~]# find /etc -not -perm -111 -type f -ls
(4)处理动作:
-print:输出至标准输出;默认的动作;
-ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
-delete:删除查找到的文件;
-fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
-ok COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-exec COMMAND {} ; :对查找到的每个文件执行由COMMAND表示的命令;
-xargs
三、补充
1、查找/home目录下,最近三天修改的文件,并显示文件大小
find /home -ctime 3 | xargs du -sh
2、查找/var 目录下,第三级目录下 pl 类型的文件。
find /var -type p -o -type l -mindepth 3 -maxdepth 3