Linux的文件查找find

时间:2021-08-08
本文章向大家介绍Linux的文件查找find,主要包括Linux的文件查找find使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Linux的文件查找find

find的作用

它可以根据不同的条件来进行查找文件,例如权限,拥有者,修改日期/时间,文件大小等

语法:

命令 路径 选项 表达式 动作
find path [options....] [expression] [action]

根据文件名查找

-name 
查找tmp目录下以wk开头的所有文件:
root @localhost[13:45:38]:~
$ find /tmp -name 'wk*'  
/tmp/wk1
/tmp/wk2
/tmp/wk3
/tmp/wk4
/tmp/wk5
-i 不区分大小写 一般组合可以是 -iname

根据文件类型查找

-type 
查找etc目录下的所有文件
root@localhost[13:50:49]:~
$ find /etc -type f

多选项组合查找

-a: and  和
查找etc目录下名字同时含有conf 和 sudo的所有文件
root@localhost[13:58:27]:~
$ find /etc -name '*conf*' -a -name 'sudo*'
/etc/sudo-ldap.conf
/etc/sudo.conf

-o: or 或
查找etc目录下名字含有conf 或者sudo 的所有文件
root@localhost[14:02:03]:~
$ find /etc -name '*conf' -o -name 'sudo*'

!: 取反  非
查找etc目录下除了名字含有conf 和sudo 的其他所有文件
方法一:root@localhost[14:05:34]:~
$ find /etc ! \( -name '*conf' -o -name 'sudo*' \)
方法二:root@localhost[14:07:11]:~
$ find /etc ! -name '*conf' -a ! -name 'sudo*'

根据文件大小查找

-size
+5M : 查找大于5M的
-5M : 查找小于5M的
 5M  : 查找等于5M的
注意:一个block是4k,如果查找11k的 显示出来的是12k,因为11k是3个block,所以是12k
查找etc目录下大于2M的文件 并且显示他们的大小
root@localhost[14:16:45]:~
$ find /etc -size +2M |xargs du -sh
7.6M	/etc/udev/hwdb.bin
3.8M	/etc/selinux/targeted/active/policy.kern
3.8M	/etc/selinux/targeted/policy/policy.31
du -sh :看文件大小的

根据时间查找

-mtime:修改时间(一般是修改里面内容的时间或者是创建的时间)m:modify
-atime;访问时间 a:access
-ctime:修改时间(修改属性的时间)c: change   (用的比较多得是-mtime)
+7 : 查找7天之前的 不包含今天
root@localhost[00:01:37]:~
$ find ./ -mtime +7
-7 :查找最近7天的 包含今天
root@localhost[00:01:37]:~
$ find ./ -mtime -7
 7 ;查找不包含今天 往前数第7天
root@localhost[00:01:37]:~
$ find ./ -mtime 7
 先创建这个月30天的文件 root@localhost[14:51:44]:~
$ for i in `seq -w 30`;do date -s 202106$i && touch file-$i;done 这是一个for循环
删除近7天之前的所有file文件:
find ./ -type f -name 'file*' ! -mtime -7 -delete
或者
root@localhost[00:14:46]:~
$ find ./ -type f -name 'file*' ! \( -mtime -7 \)|xargs rm -f

根据用户来查找

-user
-group
-nouser
-nogroup
查找用户是wk1 组也是wk1的文件
root@localhost[00:28:39]:~
$ find /-user wk1 -group wk1

按照深度查找

-maxdepth
查找etc目录下的一级目录
方法一:
root@localhost[00:31:59]:~
$ find /etc/ -type d -maxdepth 1
方法二:
root@localhost[00:38:16]:~
$ ll /etc|grep '^d'
方法三:
root@localhost[00:57:40]:~
$ ls -F /etc|grep '/$'
方法四:
root@localhost[00:59:47]:~
$ tree -L 1 -d /etc

按权限查找

-perm 
精确查找
root@localhost[01:01:42]:~
$ find ./ -perm 666
模糊匹配包含-后面的对应的权限
root@localhost[01:04:47]:~
$ find ./ -perm -223  (-223可以把它拆分成-w--w--wx)

find的动作(了解,很少用)

动作 作用
-print 打印(默认)
-ls 列出找到的文件的详细信息 (不常用)
-delete 删除找到的文件
-ok (后面接;同时需要转义) 后面根shell命令,第一次敲会提示是否执行
-exec 后面跟shell命令

xargs结合find使用

root@localhost[00:14:46]:~
$ find ./ -type f -name 'file*' ! \( -mtime -7 \)|xargs rm -f

原文地址:https://www.cnblogs.com/wkyydsnb/p/15114499.html