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
用法:
find 搜索目录 选项 目标文件名
比如:
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天内文件内容被修改的文件
示例:
# 按文件名字来查找文件
find / -name test.log # 斜杠“/”表示全盘搜索
find . -name test.log # 在当前目录及子目录下搜索
find /usr/home -name test.log # 在指定目录/usr/home下,搜索文件名为test.log的文件
find / -iname test.log # -iname表示不区分文件大小写
find / -name \*.log # 查看所有以.log结尾的文件
find / -name '*.log'
find / -name "*.log"
# 按文件大小来查找文件
# 这里的文件大小和我们常见的文件大小不一致,单位是一个数据块,其中一个数据块=512字节,也就是0.5KB,所以1KB等于2个数据块;
# 比如要查找大于100MB的文件,这里的数据块的大小是:100*1024*2KB=204800KB
find / -size +204800 # 全盘下查找大于204800KB的文件
find / -size -204800 # 全盘下查找小于204800KB的文件
find / -size 204800 # 全盘下查找等于204800KB的文件
# 查找属于用户usr1的文件
find / -user usr1 # 全盘查找属于usr1用户的所有文件
# 按照文件类型搜索文件
find / -type d # 全盘查找目录
find / -type f # 全盘查找普通文件
find / -type l # 全盘查找软链接
# 按照文件的时间属性来查找
# -60,表示60min内
# +60,表示60min前
# 60,表示60min-61min之间的时间
find / -cmin -60 # 表示1小时内被访问的文件
find / -cmin +60 # 表示1小时前被访问的文件
# 多个选项一起搜索
# -a 表示and,与
# -o 表示or,或
# -not 表示not,非
find /opt -cmin -60 -a -name '*conf' # 搜索目录/opt下查找近1小时修改同时文件名以conf结尾的文件