find
在指定目录下查找文件,基本格式:find(选项)(参数) ,另一种写法:find path -option [ -print ] [ -exec -ok command ] {} \;
具有多个test参数
| 参数 | 作用 |
|---|---|
| -name | 根据文件名查找 |
| -type | 根据文件类型查找:f(文件),d(路径) |
| -regex | 匹配正则表达式 |
| -i | 不区分大小写 |
| ! | 表示否定,取反 |
| -maxdepth 3 | 查找文件深度,这里是三层 |
| -size | 根据文件大小 |
| -delete | 删除 |
| -mtime | 根据最后修改时间查询, |
#选择符合条件的数据文件,并删除
#find默认匹配的是通配符
find . -type f -name "*.log.[0-9]*" -delete
# + 表示超过那个时间,-表示那个时间之内
# 不填写路径表示当前路径
[dps@ccod131 bak]$ find -mtime -10
.
./test11.txt
./TEST.TXT
./update-resin.sh
./zaj.sh
# 基于正则表达式查找
[dps@ccod131 bak]$ find -regex ".*\.sh"
./break_continue.sh
./if_file.sh
./if_number.sh
./if_string.sh
./select_1.sh
./read.sh
./until.sh
./update-resin.sh
# -i 不区分大小写
[dps@ccod131 bak]$ find -iregex ".*\.sh"
./break_continue.sh
./if_file.sh
./if_number.sh
./if_string.sh
./select_1.sh
./read.sh
./until.sh
./update-resin.sh
# i表示否定
[dps@ccod131 bak]$ find ! -iregex ".*\.SH"
.
./test11.txt
./test
./test/a7b
./test/a2b
./test/a6b
# 查找指定时间段内的文件
find . -name '*.dat' -newermt '2023-09-01' ! -newermt '2023-11-01'
mtime
| 操作 | 含义 |
|---|---|
| +1 | 修改时间大于1天的数据,也就是修改时间在48h之内的数据 |
| 1 | 修改时间在24-48h之内的数据 |
| 0 | 修改时间在24小时以内的数据 |
| -1 | 修改时间在24小时以内的数据 |
![]() |
-exec
注意:exec只识别原始命令,不识别别名
[dps@ccod131 bak]$ find -name "*.sh" -size +2 -exec ls -l {} \;
-rwxr-xr-x 1 dps dps 2016 12月 3 17:59 ./update-resin.sh
- exec后边可以接任何命令
- {} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名
- -exec参数中无法使用多个命令,不过可以接文件
ok
用来确认,执行输入y,不执行输入n
[dps@ccod131 bak]$ find -name "*.sh" -size +2 -ok ls -l {} \;
< ls ... ./update-resin.sh > ? y
-rwxr-xr-x 1 dps dps 2016 12月 3 17:59 ./update-resin.sh
- ok和exec不能同时使用;
locate
通过数据库搜索,数据库会定时更新(故有时候新建的文件或近期的文件查不到),当然可也通过命令手动更新。
使用样例:
#指定路径查找文件
[dps@ccod131 bak]$ locate ~/bak/test
/dps/bak/test
/dps/bak/test11.txt
/dps/bak/test/a1b
/dps/bak/test/a2b
/dps/bak/test/a3b
/dps/bak/test/a5b
/dps/bak/test/a6b
/dps/bak/test/a7b
# 默认查找该机器的所有路径
[dps@ccod131 bak]$ locate bash
/bin/bash
/dps/.bash_history
/dps/.bash_logout
/dps/.bash_profile
/dps/.bashrc
/dps/jdk1.7.0_10/jre/lib/zi/Africa/Lubumbashi
/etc/bash_completion.d
/etc/bashrc
/etc/bash_completion.d/gdbus-bash-completion.sh
/etc/bash_completion.d/git
本文详细介绍了Linux系统中find和locate命令的用法。find命令可根据文件名、类型、大小等属性查找文件,并支持文件的操作如删除。locate则通过快速搜索数据库定位文件位置。文章还提供了多个实例演示如何高效使用这两个命令。

9882

被折叠的 条评论
为什么被折叠?



