翼度科技»论坛 云主机 LINUX 查看内容

Linux基础命令-find

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
目录

Linux基础命令-find

实时查找工具,通过遍历指定路径下的文件系统完成文件查找
find命令的功能是用于根据给定的路径和条件查找相关文件或目录,参数灵活方便,且支持正则表达式,结合管道符后能够实现更加复杂的功能,是Linux系统运维人员日常工作必须掌握的命令之一。
find命令通常进行的是从根目录(/)开始的全盘搜索,有别于whereis、which、locate……等的有条件或部分文件的搜索。对于服务器负载较高的情况,建议不要在高峰时期使用find命令的模糊搜索,会相对消耗较多的系统资源。
一、工作特点:


  • 查找速度略慢
  • 精确查找
  • 实时查找
  • 可以满足多种条件匹配
  1. find [路径] [选项]  [查找条件 + 处理动作]
  2. 查找路径:指定具体目录路径,默认是当前文件夹
  3. 查找条件:指定的查找标准(文件名/大小/类型/权限等),默认是找出所有文件
  4. 处理动作:对符合条件的文件做什么操作,默认输出屏幕
复制代码
二、常用参数:

-name匹配文件名-perm匹配文件权限-uesr匹配文件属主-group匹配文件属组-mtime匹配最后修改文件内容时间-atime匹配最后读取文件内容时间-ctime匹配最后修改文件属性时间-nouser匹配无属主的文件-nogroup匹配无属组的文件-newer匹配比指定文件更新的文件-type匹配文件类型-size匹配文件大小-exec......{};对搜索结果执行命令-ok......{};对搜索到的每个文件执行命令(需要确认)-regex使用正则表达式匹配文件名-maxdepth/-mindepth控制搜索的深度-mount不跨越文件系统挂载点进行查找实际使用时可以根据man find来获取完整的文档和用法说明
三、练习:

1、查找/var目录下属主为root,且属组为mail的所有文件或目录
  1. [root@localhost ~]# find /var -user root -group mail
复制代码

2、查找/usr目录下不属于root,bin或centos的所有文件或目录
  1. [root@localhost ~]# find /usr ‐not ‐user root ‐a ‐not ‐user bin ‐a ‐not ‐user centos
  2. [root@localhost ~]# find /usr ‐not \(‐user root ‐o ‐user bin ‐o ‐user centos \)
复制代码
3、查找/etc目录下最近一周内容曾被修改过的文件或目录
  1. [root@localhost ~]# find /etc -mtime -7
复制代码

4、查找当前系统上没有属主或属组,且最近一周内曾被访问过的文件或目录
  1. [root@localhost ~]# find / \( -nouser -o -nogroup \) -a -atime -7
复制代码

5、查找/etc目录下大于1M且类型为普通文件的所有文件或目录
  1. [root@localhost ~]# find /etc -size +1M -type f
复制代码

6、查找/etc目录下所有用户都没有写权限的文件
  1. [root@localhost ~]# find /etc -not -perm /222
复制代码

7、查找/etc目录下至少一类用户没有执行权限的文件
  1. [root@localhost ~]# find /etc -not -perm -111
复制代码
8、查找/etc/init.d目录下,所有用户都执行权限,且其它用户写权限的文件
  1. [root@localhost ~]# find /etc/init.d/ -perm -113
复制代码

9、查找 /root目录下所有扩展名为 .txt 的文件
  1. [root@localhost ~]# find /root -name "*.txt"
  2. [root@localhost ~]# find /root -regex '.*.txt'
复制代码


10、查找 /home 目录下所有以 a 开头的文件
  1. [root@localhost ~]# find /home -name "a*"
复制代码

11、查找 /home 目录下所有最近7天内修改过的文件
  1. [root@localhost ~]# find /home -mtime -7
复制代码

12、查找 /home 目录下所有大小大于1MB的文件
  1. [root@localhost ~]# find /home -size +1M
复制代码

13、查找 /root 目录下所有名 file 的文件,并列出它们的详细信息
  1. [root@localhost ~]# find /root -name "file" -ls
  2. [root@localhost ~]# find /root -name "file" -exec ls -lht {} \;
复制代码

14、查找 /home 目录下所有包含字符串 example 的文件
  1. [root@localhost ~]# find /home -name "*example*"
复制代码

15、查找 /home 目录下所有属于用户 test01 的文件
  1. [root@localhost ~]# find /home -user test01
复制代码

16、查找 /home 目录下所有属于组 test01 的文件
  1. [root@localhost ~]# find /home -group test01
复制代码

17、查找 /etc 目录下所有文件名以 .conf 结尾的文件
  1. [root@localhost ~]# find /etc -name "*.conf"
复制代码
18、查找 /var/log 目录下所有最近30天内修改过的文件
  1. [root@localhost ~]# find /var/log -mtime -30
复制代码

19、查找 /var 目录下所有大小小于50KB的文件
  1. [root@localhost ~]# find /var -size -50k
复制代码
20、查找 /home 目录下所有属于用户 test01 的文件,并按修改时间排序
  1. [root@localhost ~]# find /home -user test01 -exec ls -lht {} \;
复制代码

21、删除/home目录下除了test01和test02以外的文件目录
  1. [root@localhost home]# find /home -maxdepth 1 ! \( -name test01 -o -name test02 \) -type f -exec rm -rf {} +
复制代码

22、查找 /var 目录下所有以 .log 结尾的文件,并列出它们的详细信息。
  1. [root@localhost ~]# find /var -name "*.log" -ls
复制代码

23、查找 /root 目录下所有名为file的文件并复制到/root/dir目录下
  1. [root@localhost ~]# find /root -name "file" -exec cp {} /root/dir/ \;
复制代码

24、查找 /   目录下所有没有属主且没有属组的文件并移动到/root目录下
  1. [root@localhost ~]# find / -nouser -a -nogroup -exec mv {} /root/ \;
复制代码
来源:https://www.cnblogs.com/misakivv/p/17989569
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具