find命令用法及示例

mac2024-08-11  54

Linux命令:find

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,但如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大,所以,在使用 find 命令搜索时,不要指定过大的搜索范围。 语法格式: find 路径(查找范围) 查找数据条件(参数)

1、根据名称查找
[root@yu zy]# find /zy/ -name z1.txt /zy/z1/z1.txt /zy/z2/z1.txt /zy/z3/z1.txt /zy/z1.txt
2、根据文件类型
[root@yu zy]# find /zy/ -type f /zy/z1/z1.txt /zy/z1/z2.txt /zy/z1/z3.txt
3、根据文件大小
[root@yu zy]# find /zy/ -size -5 /zy/ /zy/z1 /zy/z1/z1.txt /zy/z1/z2.txt /zy/z1/z3.txt
4、特殊查找数据方法:

-maxdepth: 查找数据层级最深深度 -mindepth: 查找数据层级最浅深度

[root@yu zy]# find /zy/ -maxdepth 1 -name "z1.txt" /zy/z1.txt
5、 如何查找两个文件是否存在
[root@yu zy]# find /zy/ -name 'z1.txt' -o -name 'z2.txt' /zy/z1/z1.txt /zy/z1/z2.txt
6、在查找排除
[root@yu zy]# find /zy/ -name '*.txt' ! -name 'z2.txt' /zy/z1/z1.txt /zy/z1/z3.txt [root@yu zy]# find /zy/ -name '*.txt' -not -name 'z2.txt' /zy/z1/z1.txt /zy/z1/z3.txt
7、查找多个条件是并且关系
[root@yu zy]# find /zy/ -name 'z1*' -a -name '*.txt' /zy/z1/z1.txt /zy/z2/z1.txt /zy/z3/z1.txt /zy/z1.txt
8、 排除指定目录不进行查找
[root@yu zy]# find /zy/ -path /zy/z2 -prune -o -name '*.txt' -print /zy/z1/z1.txt /zy/z1/z2.txt /zy/z1/z3.txt /zy/z3/z1.txt /zy/z3/z2.txt /zy/z3/z3.txt
9、如何将找出的数据进行复制

方法1、利用管道

[root@yu zy]# find /yu/ -name '*.txt'|xargs cp -t /zy/ [root@yu zy]# ls z1 z1.txt z2 z2.txt z3 z3.txt [root@yu zy]# mv z1.txt z2.txt z3.txt /yu/ [root@yu zy]# ls z1 z2 z3 [root@yu yu]# find /yu/ -name '*.txt'|xargs -i cp {} /zy/ [root@yu yu]# cd /zy [root@yu zy]# ls z1 z1.txt z2 z2.txt z3 z3.txt

方法2、利用exec参数

[root@yu zy]# find /yu/ -name '*.txt' -exec cp {} /zy/ \; [root@yu zy]# ls z1 z1.txt z2 z2.txt z3 z3.txt
10、按时间条件查找

一天以前 / 之内:+1 / -1 等于一天:1

[root@yu zy]# find /yu/ -name '*.txt' -mtime -1 /yu/z1.txt /yu/z2.txt /yu/z3.txt

-mmin: 按照分钟查找数据信息

比较重要表达式 扩展操作

最新回复(0)