Linux 超级神器 find:文件藏再深,1 秒给你揪出来
作为一个程序员,尤其是 Linux 程序员,你一定有过这种 “抓狂时刻”: 项目目录里文件成百上千,明明记得有个叫 debug_log.c 的文件,却翻遍了子目录都找不到; 或者想找出所有三天前修改过的 .h 文件,手动找简直是大海捞针。
这时候,你需要一个 Linux 下的 “文件搜索神器” —— 它就是 find。
在我看来,find 就像 Linux 世界里的 “超级侦探”, 不管你的文件藏在哪个犄角旮旯,只要给它一点线索(文件名、大小、修改时间……), 它就能把文件给你 “揪” 出来,功能强大到能满足你几乎所有的文件搜索需求。
下面开始看例子。
还是用我们熟悉的 mywork 目录,这里嵌套着 mytest、test 等子目录,文件一堆。 这时候输入find . -name "test.c"敲回车 —— 嘿,不管 test.c 藏在哪个子目录里,find 都会把它的完整路径列出来,就像给文件装了定位器。
我们再试试按类型搜索: 输入 find . -type d,一眨眼的功夫,当前目录下所有的子目录都被列了出来,找目录结构的时候超好用。
接着试试组合条件: 输入 find . -name ".c" -and -size +1M, 这时候 find 会帮你找出所有 .c 结尾且大小超过 1M 的文件,精准筛选,不用你一个个去看文件大小。
看到这里,相信大家已经感受到 find 的强大了。 接下来就看看我日常最常用的几个 find “核心用法”:
find 的核心用法(开发必背,直接抄)
1. 按文件名搜索
find 路径 -name "文件名"
比如:find ~ -name "config.h"在用户家目录下搜索 config.h 文件。
加上 -iname 可以忽略大小写:find . -iname "Test.c"能匹配 test.c、Test.c、TEST.c 等。
2. 按文件类型搜索
find 路径 -type 类型
比如:find . -type d列出当前目录下所有子目录。
3. 按文件大小搜索
find 路径 -size 大小
比如:find . -size +10M搜索当前目录下大于 10MB 的文件。
4. 按修改时间搜索
find 路径 -mtime 天数
比如:find . -mtime -1搜索一天内修改过的文件。
5. 组合条件搜索
-and、-or、-not 自由组合
例子:find . -name ".c" -and -not -name "test*"找出所有 .c 但排除 test 开头的文件。
6. 对结果直接执行命令
-exec 命令 {} ;
例子:find . -name ".bak" -exec rm {} ;删除所有 .bak 结尾文件(慎用!)
e开发小技巧(效率翻倍)
限制搜索深度
find . -maxdepth 2 -name ".c"只搜当前目录 + 一级子目录,不往深层钻,超快。
配合 grep 搜代码内容(超好用)
find . -name "*.c" | xargs grep "main"在所有 C 文件里搜 main 函数。
按权限搜索
find . -perm 755找出权限为 755 的可执行文件。
总结
find 的核心价值,就是帮你在 Linux 的文件海洋里 “精准定位”。 不管是找文件、筛目录,还是批量操作文件,它都能胜任。
记住常用的:
你的文件搜索效率直接起飞,再也不用为找文件发愁。
find 的大致用法就讲到这里, 大家有什么常用的 find 组合技巧,欢迎在评论区交流~