文件查找
- find
- 默认全部匹配,可以使用正则进行模糊匹配
- locate
- 在数据库文件中查找(系统的文件会被定时任务更新到数据库中)
- 默认部分匹配
- whereis
- -b 只返回二进制文件
- -m 只返回帮助文档文件
- -s 只返回源代码文件
- which
- 仅查找二进制文件
find
- find 路径 选项 操作
选项 | 含义 |
---|---|
-name | 根据文件名查找 |
-perm | 根据文件权限查找 |
-prune | 排除某些查找目录 |
-user | 根据文件属主查找 |
-group | 根据文件数组查找 |
-nogroup | 查找无有效属组的文件 |
-nouser | 查找无有效属主的文件 |
-newer file1 !file2 | 查找更改时间比file1新但比file2旧IDE文件 |
-type | 按文件类型查找 |
-size -n 或 +n | 按文件大小查找 |
-mindepth n | 从n级子目录开始搜索 |
-maxdepth n | 最多搜索到n级子目录 |
-mtime -n或 +n | 根据文件更改时间查找,天为单位 |
-mmin -n或 +n | 根据文件更改时间查找,分钟为单位 |
# -name 匹配大小写
find /etc -name '*.conf'
# 忽略大小写
find /etc/ -iname '*.conf'
# 查找文件大小大于1M的文件
find /etc/ -size +1M
# 查找文件大小小于100k的文件
find /etc/ -size -100K
# 查找文件大小等于100k的文件,等于不能精确到M,K是可以的
find /etc/ -size 100K
# 查找5天之类修改的以conf结尾的文件, +5 则表示5天之前
find /etc/ -mtime -5 -name '*.conf'
# 查询目录下文件,排除 test_1和test_2目录
find . -path ./test_1 -prune -o -path ./test2 -prune -o -type f
# 找到目录下conf文件,并且删除
find ./etc -name '*.conf' -exec rm -rf {} \;
# 找到目录下conf文件,并且复制到test_2目录
find /var/log -name '*.conf' -exec copy {} ./test_2 \;
# 找到目录下7天前的的log文件,并且删除
find ./etc -type f -name "*.log" -mtime +7 -exec rm -rf {} \;
find 命令中间可以使用逻辑运算符
- -a 表示与
- -o 表示或
- -not 或者 ! 符号表示 非