find命令是Linux中强大的文件搜索命令,与which命令不同。which命令只找命令的路径,而find命令可以在整个目录树中根据文件名、类型、大小、时间、权限等任意条件搜索文件或目录
基本语法:
bash
find [搜索起始路径] [匹配条件] [执行动作]
- -name:表示按文件名搜索
1.按文件名查找
bash
[root@master Java]# find / -name "test"
/usr/bin/test
/usr/lib/modules/3.10.0-1127.el7.x86_64/kernel/drivers/ntb/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest
*字符:找以该字符结尾的文件名
bash
[root@master Java]# find / -name "*test"
/sys/power/pm_test
/sys/module/8250/parameters/skip_txen_test
/sys/module/sr_mod/parameters/xa_test
/usr/bin/test
/usr/bin/grub2-fstest
/usr/sbin/eapol_test
/usr/lib/modules/3.10.0-1127.el7.x86_64/kernel/drivers/ntb/test
/usr/lib64/nss/unsupported-tools/bltest
/usr/lib64/nss/unsupported-tools/fipstest
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest
/usr/lib64/python2.7/unittest/test
/usr/libexec/openssh/ctr-cavstest
/usr/java/latest
/media/cdrom/isolinux/memtest
[root@master Java]#
在Java目录下新建一个空白文件:test.txt
bash
[root@master Java]# touch test.txt
[root@master Java]# ls
BinarySearch.class BinarySearch.java test.txt
bash
[root@master Java]# find / -name "test.txt" # 从根目录下开始找文件名为"test.txt"的文件
/Projects/Java/test.txt
2.可以按文件类型查找:
bash
find / -type f # 普通文件
find / -type d # 目录
find / -type l # 软链接
find / -type s # 套接字文件
3.按文件大小查找
bash
find /tmp -size +100M # 大于 100MB
find /tmp -size -1k # 小于 1KB
find /tmp -size 50M # 精确 50MB
# 单位:c(字节)、k、M、G
| 特性 | which | find |
|---|---|---|
| 搜索对象 | 仅可执行命令 | 任意文件/目录 |
| 搜索范围 | $PATH 目录 | 任意指定路径 |
| 搜索条件 | 仅文件名 | 数十种条件 |
| 是否递归 | 否 | 是 |
| 额外操作 | 无 | 删除、执行、改权限等 |
简单记忆:which 找"命令",find 找"文件" 。当需要灵活搜索文件时,find 几乎是万能的。