1. 搜索文件

1.1 查找文件方法

查找文件有哪些方法:find、locate、which、grep。

  • find,实时查找,在硬盘中查找,可以查找搜索出文件、目录、软链接等;
  • locate,是在数据库/var/db/locate.database中查找,可以理解为locate并不是真的查找,而是在数据库中查找,一般数据库是系统自己更新,也可以自己手动更新
  • which,会在环境变量$PATH中设置的目录中查找文件;
  • grep,是模式匹配,主要配合一些正则的查找。

1.2 区别和比较

find和grep区别
find:搜索符合条件的文件名,包括目录、文件、软链接等,可以使用通配符;
grep:搜索符合条件的字符串,可以使用通配符。

注意事项
查找文件的命令,都可以和通配符配合使用,但是需要注意的是,通配符作为参数使用,需要使用反斜杠\、或单引号、或双引号
比如命令:find / -name “*.log”,表示查找所有以.log结尾的文件。

2. find

用法

  1. find 搜索目录 选项 目标文件名
  2. 比如:
  3. find /usr/home -name font-processor.log # 查找/usr/home目录下的文件名为front-processor.log的文件

选项
1) -name 按名字搜索
2) -size 按文件大小搜索
3) -user 根据用户名的所有者的所有文件
4) -group 根据所属组查找相关文件
5) -type 根据文件类型来查找,其中:d表示目录,f表示文件,l表示软链
6) -inum 根据i节点查找
7) -amin n 过去n分内被读取的文件
8) -cmin n 过去n分内被修改的文件,文件元数据或权限发生变化
9) -mmin n 过去n内文件内容修改的文件,内容被修改
10) -atime n 过去n天内被读取的文件
11) -ctime n 过去n天内被修改的文件
12)-mtime n 过去n天内文件内容被修改的文件

示例

  1. # 按文件名字来查找文件
  2. find / -name test.log # 斜杠“/”表示全盘搜索
  3. find . -name test.log # 在当前目录及子目录下搜索
  4. find /usr/home -name test.log # 在指定目录/usr/home下,搜索文件名为test.log的文件
  5. find / -iname test.log # -iname表示不区分文件大小写
  6. find / -name \*.log # 查看所有以.log结尾的文件
  7. find / -name '*.log'
  8. find / -name "*.log"
  9. # 按文件大小来查找文件
  10. # 这里的文件大小和我们常见的文件大小不一致,单位是一个数据块,其中一个数据块=512字节,也就是0.5KB,所以1KB等于2个数据块;
  11. # 比如要查找大于100MB的文件,这里的数据块的大小是:100*1024*2KB=204800KB
  12. find / -size +204800 # 全盘下查找大于204800KB的文件
  13. find / -size -204800 # 全盘下查找小于204800KB的文件
  14. find / -size 204800 # 全盘下查找等于204800KB的文件
  15. # 查找属于用户usr1的文件
  16. find / -user usr1 # 全盘查找属于usr1用户的所有文件
  17. # 按照文件类型搜索文件
  18. find / -type d # 全盘查找目录
  19. find / -type f # 全盘查找普通文件
  20. find / -type l # 全盘查找软链接
  21. # 按照文件的时间属性来查找
  22. # -60,表示60min内
  23. # +60,表示60min前
  24. # 60,表示60min-61min之间的时间
  25. find / -cmin -60 # 表示1小时内被访问的文件
  26. find / -cmin +60 # 表示1小时前被访问的文件
  27. # 多个选项一起搜索
  28. # -a 表示and,与
  29. # -o 表示or,或
  30. # -not 表示not,非
  31. find /opt -cmin -60 -a -name '*conf' # 搜索目录/opt下查找近1小时修改同时文件名以conf结尾的文件