24
2025
06
19:29:52

linux 15个find神技

你以为Linux的find命令就是个老实巴交找文件的工具?

大错特错!

它根本就是你命令行里深藏不露的核弹按钮!

那些花里胡哨的图形界面,那些写起来啰里八嗦的Python脚本,在find面前通通都是战五渣!

今天,我就把这层窗户纸彻底捅破,让你见识见识find的花样玩法到底有多野、多狠、多高效!准备好颠覆认知了吗?坐稳了!

场景1:服务器炸了?老板在骂娘?日志爆仓急救术!

想象一下:凌晨三点,刺耳的电话铃把咖喱哥从梦里拽出来。

服务器硬盘红了!报警邮件刷屏!

老板在电话那头咆哮:“数据没了你咖喱哥就立马滚蛋!” 

一听这话,你要慌吗?别慌!find就是你的消防栓,及时给你灭老板的火!



# 终极清道夫:精准爆破 /var/log 下所有超过7天的 *.log 垃圾,快、准、狠!
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;

 -type f: 只搞文件,不碰文件夹,稳!

 -name "*.log": 目标明确,只干日志文件,不误伤!

 -mtime +7: 时间锁定,专治7天前的“老顽固”!

 -exec rm -f {} \;: 找到就删,绝不废话!那个{}就是挨个点名,\;告诉find:“这条指令干完了,下一个!”


如此一番操作下来,硬盘空间肉眼可见地涨回来,服务器喘过气了,老板闭嘴了。

你看,你从“背锅侠”秒变“救世主”,靠的就是这一行代码!比写脚本快一百倍,比点鼠标稳一万倍!

场景2:安全审计头皮发麻?揪出系统里的“内鬼”文件!

安全团队发来警报:可能有可疑的可执行文件藏在你管的服务器里!你心里咯噔一下,这要出事儿可是大事儿!

别怕,find就是你的超级侦探!

# 权限猎手出马:揪出 /home 下所有用户能执行但用户自己都不能读的怪胎文件!这玩意儿绝对有问题!
find /home -type f -perm /u=x ! -perm /u=r -ls

 -perm /u=x: 文件的所有者(user)有执行(x)权限。/表示“包含”,有这个权限位就算。

  ! -perm /u=r: 前面的!表示“取反”,就是找那些所有者没有读(r)权限的文件。能执行但不能读?鬼鬼祟祟!

  -ls: 别光找,给我把详细信息(权限、所有者、大小、时间)像ls -l一样列出来!证据确凿!

此条命令一执行,唰一下,可疑文件列表直接拍在屏幕上。

哪个用户、什么权限、藏在哪,一清二楚。

团队都看傻了:“你咋这么快?” 你微微一笑,深藏功与名(希望如此吧)。

find就是你的合规扫描仪,免费、高效、自带Buff!

场景3:硬盘又双叒叕告急?专治各种“空间肥宅”!

看着监控面板上刺眼的红色硬盘使用率,血压蹭蹭往上飙。

那些动辄几百兆、上G的大文件,像肿瘤一样消耗着空间。

手动找?眼都瞎!上find,精准切除!


# 空间大扫除:在 /backup 这个“胖子集中营”里,找出所有超过100MB的“巨无霸”,用gzip狠狠“瘦身”!
find /backup -type f -size +100M -exec gzip -v {} \;

  -size +100M: 目标明确:大于100MB的,都是“打击对象”!+表示“大于”,M是兆字节。想找1G以上的?换成+1G!

  -exec gzip -v {} \;: 找到目标?直接上压缩!gzip -v一边压还一边告诉你它在压谁(-v 显示详情)。{}代表那个可怜的大文件。

夸张一下哈,硬盘空间就能肉眼可见地释放出来。

看着监恐面板由红变绿,那感觉比三伏天喝冰可乐还爽!省下的钱,够买几台新服务器了!

还买啥扩容?find + gzip,免费的空间魔术师!

场景4:文件名带空格?删不掉?原地爆炸?find专治各种不服!

新手最怕啥?文件名里有空格!想用rm *.tmp删临时文件?结果系统提示“文件不存在”?气得想砸键盘!find和xargs的黄金搭档专克此症!

# 空格克星降临:管你文件名带空格、带括号、带奇葩符号,统统拿下!安全清理当前目录所有 .tmp 垃圾!
find . -name "*.tmp" -print0 | xargs -0 rm -f

-print0: 这是find的大招!它不用空格或换行分隔文件名,而是用NULL字符 (\0)!任你文件名里有什么妖魔鬼怪(空格、换行、引号),NULL字符都能完美分割,绝不误伤!

  | xargs -0: xargs接招!-0 告诉它:“兄弟,前面来的数据是用NULL分隔的,按这个规矩来!” 完美搭档!

  rm -f: 安静地删除(-f force),不废话。

不管多奇葩的文件名,瞬间灰飞烟灭,系统干干净净。

强迫症患者的福音!世界终于清静了!这招,教科书都不一定教,但绝对是老司机的保命符!

场景5:文歼名乱得像一锅粥?正则表达式来降维打击!

假如你要找名字里带“project2023”或者“project2024”的文件夹?

那不成你还要手动翻?

眼珠子看掉也找不全!find的正则(-regex)功能,就是你的超级搜索引擎!

# 深度挖掘:在浩瀚的 /data 海洋里,精准捞出所有名字包含 project2023 或 project2024 的目录宝藏!
find /data -type d -regex ".*/project202[34].*"

  -regex: 开启正则表达式模式!比简单的-name强大N倍!

  ".*/project202[34].*":

      .*:匹配任意字符任意次(路径前面的部分)

      /:匹配路径分隔符

      project202[34]:匹配 project2023 或 project2024 ([34] 表示匹配3或4)

      .*:匹配后面的任意字符(目录名可能还有后缀)

不知道大家用过没?那一瞬间锁定目标目录列表,精准无比。

什么手动翻找,什么写复杂脚本过滤文件名,都弱爆了!find的正则,就是你的寻宝图!

场景6:空文件夹像狗皮膏药?看着就烦?一键铲平!

项目目录里,总有些空文件夹像幽灵一样飘着,删吧,怕误删;不删吧,碍眼还占地方(inode也是资源!)。find专治此等“空壳”!

# 空壳清理大师:把当前目录下(包括所有子目录)那些没用的空文件夹,统统扫进历史的垃圾桶!
find . -type d -empty -exec rmdir {} \;

 -type d -empty: 目标明确:类型是目录(d),并且是空的(empty)!一个文件都没有的,才够格被清理!

  -exec rmdir {} \;: 对找到的空目录执行rmdir命令。注意:rmdir只能删空目录,配合-empty使用,安全无忧!

这个命令我很喜欢,对于强迫症的来说,很是爽!

一下清掉几十上百个空文件夹,目录结构瞬间清爽得像刚整理过的桌面!强迫症瞬间被治愈!省下的inode,还能再战十年!

场景7:老板要资产清单?Excel手敲到天亮?find秒出报表!

老板突然抽风:“明天上班前,给我一份 /home/user/docs 下所有PDF文件的清单,要路径、大小、修改时间!” 你眼前一黑?别慌,find的-printf就是你的报表生成器!

# 资产清单神器:把 /home/user/docs 里所有PDF的“身份证信息”(路径、大小、最后修改时间)整齐列出来!
find /home/user/docs -type f -name "*.pdf" -printf "%p %s %t\n"

  -printf: 自定义输出格式,想输出啥就输出啥,随心所欲!

  • %p: 文件的全路径 (Path)

  • %s: 文件大小,单位是字节 (Size)。想换算成MB?后面加个除号/1048576就行(1MB=1048576字节)!

  • %t: 文件最后修改时间 (Time),默认格式(如 Mon Jun 24 15:30:00 2024)。想换格式?查手册man find看-printf格式符!

  • \n: 换行,一条记录一行,整整齐齐。

运行后,一份清晰专业的清单瞬间生成,直接贴给老板,或者重定向(> report.txt)到文件。

Excel?手动敲?不存在的!效率提升一百倍,准时下班不是梦!

场景8:权限设错了?几百个文件要改?手动改到猴年马月?

运维手一抖,把一批重要配置文件(.conf)的权限设成了777(谁都能改!),冷汗唰就下来了。赶紧修复!find批量操作来救火!

# 权限修复大队长:冲进 /opt/important_app,把所有 .conf 文件的权限改回安全的 644(用户读写,其他人只读)!
find /opt/important_app -type f -name "*.conf" -exec chmod 644 {} \;

  -exec chmod 644 {} \;: 对找到的每一个.conf文件,执行chmod 644命令。

644代表:用户(u:owner)有读写(rw-),组(g)和其他人(o)只有读(r--)。安全又规范!

错误权限瞬间被纠正,安全隐患解除。批量操作的魅力就在于此!又快又稳,避免人为失误。系统安全,稳了!

场景9:代码里藏了密码?紧急排查!find + grep王炸组合!

安全扫描报告:代码里可能存在硬编码密码!要命了!赶紧查!find负责定位文件,grep负责挖内容,黄金搭档效率翻倍!



# 代码安检门:深度扫描 /src 下所有 Python 文件 (.py),挖出所有写了 "password =" 这种可疑行径的地方,带上文件名和行号!
find /src -type f -name "*.py" -exec grep -Hn "password =" {} \;

-exec grep -Hn "password =" {} \;:

  • grep:文本搜索神器。

  • -H:打印匹配行所在的文件名。必须的!不然谁知道在哪?

  • -n:打印匹配行的行号。精准定位!

  • "password =":要搜索的字符串(这里只是举例,实际按需修改)。

  •  {}:find找到的每一个.py文件。


嘿嘿,有点意思这一个命令,懂的都懂!所有包含password =的代码行,带着它们的文件名和行号,赤裸裸地呈现在你面前。

该删的删,该改的改,安全漏洞无处遁形!这组合拳的效率,吊打任何IDE的全局搜索!

场景10:关键配置文件刚改过?赶紧备份!手慢无!

反正对于爱折腾的人来说,一不小心就会手贱,然后改了几个核心的.conf文件,改完心里直打鼓:“万一改错了咋整?” 

后悔药来了!find帮你快速备份刚动过的文件!

# 后悔药快照:把 /etc 下所有24小时内被修改过的 .conf 文件,火速复制一份到 /backup/etc_latest 保平安!
find /etc -type f -name "*.conf" -mtime -1 -exec cp -v {} /backup/etc_latest/ \;

 -mtime -1: 找修改时间在1天(24小时)内的文件。-号表示“以内”。

 -exec cp -v {} /backup/etc_latest/ \;: 对找到的每个文件,执行cp -v复制到备份目录。

-v让你看到复制过程,心里踏实。注意备份目录(/backup/etc_latest/)要先存在!

这样就能把一份最新的关键配置备份瞬间完成。

万一改崩了系统,分分钟就能还原。这安全感,杠杠的!运维必备后悔药!

场景11:找巨无霸源头?看哪个目录最吃空间!

du命令看总量,但想知道/var底下哪个子目录最肥?find + du + sort 组合拳,揪出空间黑洞!

图片


# 空间侦探:扫描 /var 下所有一级子目录,计算它们各自占了多少地盘,然后按占用空间从大到小排座次!
find /var -maxdepth 1 -mindepth 1 -type d -exec du -sh {} \; | sort -hr

  -maxdepth 1 -mindepth 1: 只查/var直接下一级的目录(-mindepth 1排除/var自身)。

  -type d: 只找目录。

  -exec du -sh {} \;: 对每个找到的目录,用du -sh计算并显示其总大小(-s summary总计, -h human-readable 人类可读格式,如K, M, G)。

  | sort -hr: 把du的结果通过管道(|)送给sort排序。-h表示按人类可读的大小排(能识别K, M, G),-r表示从大到小(Reverse)。

不紧不慢,抽根烟回来一看,就一眼锁定/var下的空间吞噬者(通常是/var/log或/var/lib下的某个库)!

精准打击,清理效率翻倍!就像美国打击伊朗的核基地一下。

场景12:文件太多?ls卡死?find分页慢慢看!

一个目录下文件成千上万,一敲ls,命令行卡死,光标疯狂闪烁?find配合分页工具less,优雅查看!

# 优雅浏览大师:列出当前目录所有文件(包括隐藏的),按名字排序,一页一页看,不卡壳!
find . -maxdepth 1 -print0 | sort -z | xargs -0 ls -ldU | less

  -maxdepth 1: 只看当前目录,不递归。

  -print0: 又是NULL分隔,安全处理奇葩文件名。

  | sort -z: 用NULL分隔的方式对文件名排序。

  | xargs -0 ls -ldU: 把排好序的文件名安全地喂给ls -ldU显示详情(-l长格式, -d目录本身, -U不排序,因为前面排好了)。

  | less: 最终交给less分页器,上下翻页(j/k),搜索(/),退出(q),优雅从容不卡顿!

文件再多也不怕,海量文件轻松浏览,再也不怕ls卡死命令行!从容淡定,高手风范!

场景13:按用户清理?离职同事的“遗产”别浪费空间!


同事离职了,他/home目录下的文件成了“无主之地”?放着占地方,删了怕有用?find帮你精准识别并处理!

# 用户遗产处理专员:找出 /home 下所有属于 olduser 的文件(UID 1001),详细列出,看看哪些能清理!
find /home -user 1001 -ls# 确认无误后,批量删除(慎用!):# find /home -user 1001 -exec rm -rf {} \;

  -user 1001: 按文件所有者查找。可以用用户名(olduser),也可以用用户的数字UID(1001),后者更可靠。

  -ls: 先详细查看,确认目标!这一步非常重要!千万别直接删!

  (可选) -exec rm -rf {} \;: 极其危险! 确认绝对不需要这些文件后,才执行此命令删除。-r递归删目录,-f强制。

精准定位离职员工文件,确认后批量清理,释放宝贵空间。流程清晰,责任明确!再次强调:删除前务必-ls确认!

场景14:精确时间点搜索?案发现场还原!

“昨天下午3点到5点之间,谁动了这个关键文件?” 需要精确到分钟的搜索?find的-newerXY和-amin/-cmin/-mmin系列能办到!

这也是个好用的命令,贼好用!

# 时间神探:在 /etc 目录下,找出所有在 2025-06-24 14:30:00 之后被修改过的文件!
find /etc -type f -newermt "2024-06-24 14:30:00"
# 或者:找出所有在 120 分钟(2小时)内被访问过的文件!
find /etc -type f -amin -120
图片

-newermt: 找修改时间(mtime)比指定时间戳("2024-06-24 14:30:00") 新的文件。还有-newerat(访问时间), -newerct(状态变更时间)。

 -amin -120: 找访问时间(atime)在 120分钟之内 (-表示之内) 的文件。类似的有-cmin(状态变更时间), -mmin(修改时间)。

锁定特定时间段内活动的文件,用于审计、故障排查、证据收集,精确到分钟!破案效率飙升!

场景15:文件太多太杂?按类型归档!

下载文件夹一团乱麻?图片、文档、压缩包混在一起?find + mkdir + cp/mv,实现自动化分类归档!

# 自动归档小助手:把 ~/Downloads 里的 jpg/png 图片挪到 ~/Pictures,把 pdf/docx 挪到 ~/Documents!
# 1. 确保目标目录存在
mkdir -p ~/Pictures ~/Documents
# 2. 移动图片
find ~/Downloads -type f \( -name "*.jpg" -o -name "*.png" \) -exec mv -v {} ~/Pictures/ \;
# 3. 移动文档
find ~/Downloads -type f \( -name "*.pdf" -o -name "*.docx" \) -exec mv -v {} ~/Documents/ \;

  \( ... -o ... \): 逻辑组合!-o 表示 OR (或)。这里用来匹配多种扩展名。

  -exec mv -v {} ~/Pictures/ \;: 找到后,用mv -v移动到目标目录。-v看移动过程。

杂乱无章的下载文件夹瞬间变得井井有条!自动化生活,从find开始!省时省力,心情舒畅!

写了这么多,手腕都酸了,但是,这15个硬核场景,只是find实力的冰山一角! 

它根本就不是一个简单的“搜索”命令,它是千万级别Linux命令里的多买面手,一行命令,干完别人写脚本半天的活。

不论是时间、大小、类型,还是权限、用户、正则... 过滤条件组合无穷,指哪打哪。

关键,这家伙还稳定可靠。因为它直接操作文件系统,没有中间商(脚本语言解释器)赚差价,速度快到飞起,资源占用低到尘埃。

最、最、最、最重要的是,它是系统自带,不用装任何额外软件,走到哪用到哪。

要是你觉得它难?那不是工具的问题,是你的思维还没切换到命令行的“高效狂暴模式”!

那些说命令行复杂、过时的人,本质上就是效率的囚徒!思维的懒汉!

掌握find的多样命令,你就能把文件系统玩弄于股掌之间,把重复劳动彻底消灭,把加班时间变成摸鱼时间!




推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://www.hqyman.cn/post/11825.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: