Normal view

There are new articles available, click to refresh the page.
Before yesterdayMain stream

我们都误解了折叠屏|明日后视镜

By: 马扶摇
26 March 2026 at 10:45

消费电子产品由硅驱动,却也遵循碳基世界里的自然法则:物竞天择,适者生存。

鼠标已年过花甲,形态上却几乎没有太大的变化。计算机 70 年历史,从一间房蜕变成家用电器甚至演化成每个人的囊中之物。

而像 BP 机、GPS 导航仪、iPod 更多的产品,还没来得及演化,就被其他产品吞噬而终成为一代人的记忆。

爱范儿《明日后视镜》栏目,我们将持续审视那些持续演化中的明日产品:它们从何种想法中孕育?又如何在变化中存续?它们如何塑造新生活方式,又如何被用户所改变?

生活中总有一类人,无法接受任何他觉得「现阶段不成熟」的电子产品。

我的朋友 K 就是其中的佼佼者——从 EarPods 到 AirPods,他等了两年半;从 Home 键到「上滑解锁」,他等了四年。

而最近,他看上了我手里这台 OPPO Find N6。

作为消费电子科技产品弄潮儿——也就是我——的朋友,K 并非没有接触过折叠屏。

比如在前几年我折腾二手 Z Flip 的时候,他就做出过这样的评价:

我本来以为它能展开一整块屏幕,但这个折痕总让我觉得它是「拼好屏」。

而在 K 摸过 Find N6 之后,我可以明显看到这个坚定保守派的动摇——相比曾经的 Z Flip,Find N6 的屏幕是字面意义上「不是一个时代」的产物了。

折叠屏的期待偏差

今年的 OPPO Find N6,最主要、也是最拿得出手的特点,就是这块号称「无感折痕」的内屏了。

然而就像 K 评论 Z Flip 的那样,「折叠屏」与「折痕」之间的关系,实际上存在另一套隐形的逻辑:

表面上看,人们都是因为折痕破坏了眼睛的视觉体验和手指的触觉体验,在使用过程中「打破沉浸感」而无法接受折痕存在的。

但回归问题本质,折叠屏的存在,其实是为了满足我们当初对于「人类迟早能从口袋里掏出一个 72 寸电视」的狂野幻想而生的——

折叠屏手机的重点,从来不是能折叠,而是能在口袋里塞下一块大屏!

换言之,曾经那些对「折痕」的口诛笔伐,往往都将关注点错误地局限在了「折痕破坏了折叠屏体验」的层次。

折痕真正破坏的,是我们潜意识中对于一块完整屏幕的认知:

更糟糕的是,过去几年间,手机厂商营销折叠屏的方式,也对这种错误认知起到了推波助澜的作用。

现在去看折叠屏机型的发布会,厂商往往无所不用其极地宣传「悬浮窗」、「工作台」、「多窗口」等等功能,完全不提操作这些「小票尺寸」的窗口有多不方便。

▲ 图|CNET

而回头看 2019、2020 年折叠屏刚刚在市场上崭露头角时大家的期盼,就会轻易发现:

现在我们满脑子都是如何把一块 8 寸屏拆成两个甚至三个屏幕来用,却完全忘记了当年我们期盼的都是一整块 8 寸的大屏。

「折痕」所破坏的,正是这一层体验;Find N6 让我那个保守派朋友动摇的原因,正是给足了完整大屏的暗示。

Find N6 做对了什么

关于 OPPO Find N6 使用了哪些措施让原本显眼的折痕变得无感,我们在产品评测中已经进行了简单的介绍。

伴随着使用时间的加长、产品正式开售以及越来越多技术细节浮出水面,我们终于可以系统性地了解一下 OPPO 选择的技术路线了。

简单来说:Find N6 能够让折痕变浅乃至自修复,并不是因为什么外星科技,而是把现有柔性屏幕支撑技术发挥到了极致。

比方说 Find N6 的铰链,虽然本身只是控制机身开合的机械结构,但对于屏幕平整度同样有着至关重要的作用。

以往的折叠屏手机中轴铰链,需要借助数量不等的齿轮扭力结构将两侧衔接在一起,负责为机身开合以及悬停姿态提供足够的摩擦力和稳定性。

而出于体积、厚度和结构设计因素,以前的机型大多只会设置三组扭力结构,比如去年的 Find N5 就使用了这种「三轴」铰链:

▲ 图|哔哩哔哩 @胜利文绉绉

这样的设计虽然省空间,但三组扭力结构之间的不等距,导致铰链对屏幕的支撑也不均匀,容易出现折痕「从上到下有深有浅」的问题。

到了 Find N6 这,OPPO 选择了一种既简单又困难的方式解决——既然三轴铰链支撑不均匀,那就换成四轴铰链。

这样一来,虽然 Find N6 的机身结构设计变得更复杂了,但铰链对于屏幕的支撑效果也均匀了许多,让工程师可以把精力放在折痕深度上:

▲ 图|哔哩哔哩 @微机分WekiHome

解决了支撑的均匀度之后,就要解决如何支撑平整的问题了。

尽管厂商会将铰链顶层做平,尽可能让所有零件在摊开后形成一个平面,但生产和组装时候的细微公差仍然会导致零件高低差,给屏幕以下陷的机会。

为了解决这个问题,OPPO 选择了一个所有模型玩家都会做的事:喷一层补土。

更准确地说,是用流量控制精度极高的立体喷墨打印技术,搭配 3D 扫描,用填料喷涂在铰链的凹陷处,再进行光固化,让屏幕拥有更多的支撑点。

▲ 图|OPPO

这个技术还是「因机而异」的。OPPO 甚至单独建了一条生产线,对每一台出厂的 Find N6 铰链进行单独的「找平」:

▲ 图|哔哩哔哩 @微机分WekiHome

另一方面,Find N6 的屏幕本身也起着非常重要的作用。

毕竟折痕的形成,不仅仅是铰链的支撑力不够,「屏幕自己下陷」也是不可或缺的一环——

尽管表层屏幕可以使用柔性材料,但屏幕下方的支撑板却不能直接承受如此大角度和高强度的弯折。无论是不锈钢箔、碳纤维还是钛合金,都需要在折叠处蚀刻网状结构以释放应力:

▲ 三星超薄玻璃供应商 eCONY 开发的玻璃材质支撑板

但支撑板的镂空网刚好处在折叠屏折痕的位置,也就导致了矛盾:网状结构必须足够软才能弯折,但太软了又会被屏幕压弯,导致折痕变深。

为了解决这个问题,Find N6 选择在支撑网的工艺和屏幕材料两方面下手。

一方面,Find N6 的支撑网虽然还是传统的金属材质,但用上了三星同款的蚀刻工艺,将支撑网的开缝宽度从 0.1mm 缩小到了约 0.03mm:

▲ 图|哔哩哔哩 @微机分WekiHome

开缝更小,支撑网的强度就更高,在屏幕展开的时候可以给上层的柔性材料提供更强的支撑,让折痕变得不那么「凹」。

同时,Find N6 还提升了屏幕表层 UTG 玻璃的厚度,以及屏幕每一层之间光学胶(OCA)的成分。

更厚的 UTG 玻璃除了提高屏幕强度之外,也让屏幕更不容易下陷形成折痕;改良过的光学胶则可以减小 OLED 屏幕各层之间的蠕变,以及在展平后有回弹的余量,让折痕慢慢「自我修复」。

这样一来,依靠铰链和屏幕「一下一上」的配合,Find N6 的确实现了那个曾经看来遥不可及的梦想:一台感觉不到折痕的折叠屏。

折叠不是答案,大屏才是

说来也巧,除了这台 Find N6 之外,我们手头刚好还有一台来自 2019 年的折叠屏手机。

并且不是随便哪台折叠屏,而是那台「开启了大折叠市场」的折叠屏——三星 Galaxy Fold:

七年过去,这台 Galaxy Fold 的成色当然不甚理想。原本松垮的铰链变得更加放荡不羁,就连屏幕本身都出现了细微的裂纹,已经失去了曾经的光鲜。

然而即使跨过这么多年,拿起这台 Galaxy Fold 最具有冲击力的第一观感,仍然是中间那条巨大的折痕:

无论是当年还是今天看这台 Galaxy Fold,我们都能感觉到它身上那股非常明显的「技术尚未成熟,同志仍需努力」的感觉。

但是 Galaxy Fold 的不成熟阻碍了「折叠屏手机」市场的发展吗?显然没有。

根据统计机构 Counterpoint 的数据,2025 年是全球折叠屏市场数据最强劲的一年,仅第三季度就实现了 14% 的同比增长,创下了折叠屏品类历史出货量的新纪录。

同时,国际数据公司(IDC)在《全球季度手机追踪报告》中预测,2025 年全球折叠手机出货量将实现超过 10% 的同比增长,全年全球出货量可能达到约 2100 万部。

▲ 折叠屏 vs 直板机年增长率对比|IDC

如此强势的数据,其中大部分都是价格近万元的「大折叠屏」,对比波动不断的直板机市场,只能得出一个结论:

虽然折痕从 2019 年存在至今,但很明显并没有阻挡人们购买折叠屏手机。

毕竟从产品的角度看,2019 年发布的三星 Galaxy Fold 可谓「灾难性开局」,设计缺陷和品控问题轮番上阵,也没让市场对折叠屏产品失去信心,反而衍生出了其他形态更极致的产品——

帮助折叠屏市场在极不稳定的大环境里保持连年增长的,无外乎我们对于一块「更大的屏幕」的需求始终没有变过。

OPPO 通过 Find N6 实现的,表面上看只是让折叠屏的「折痕」变得可以接受,更深层次来说,更像是第一次让「一块大屏」的体验变得圆满了起来。

折叠屏不一定是智能手机形态的终极答案,但更大的屏幕——无论实体的还是虚拟的,一定是绝大多数用户的长期追求。

#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。

第一台「无折痕」手机,为所有「不敢折」的人而来|OPPO Find N6 评测

By: 马扶摇
17 March 2026 at 20:48

「平坦」一直是我们对于屏幕的追求。

这种从 CRT 延续到 LCD、再到 OLED 的追求,在折叠屏的时代的重要性,更是有过之而无不及。

只不过碍于折叠屏的形态,「平坦」和「弯折」这两个词在过去就像水火不容一样,始终无法在手机上找到平衡点。

——直到我们遇见了手里这台 OPPO Find N6。

「无感折痕」为谁而来

在爱范儿拿到这台 Find N6 评测样机、几位编辑轮流当主力机使用过后,竟然罕见地达成了共识:

「无感折痕」的真正受众,不是折叠屏用户,而是没用过折叠屏、仍在犹豫的观望用户们。

道理也很简单,人们对于折痕的观感,会因为视角不同产生天差地别的变化——

比如从正常使用手机的角度观看亮屏的折叠屏时,只要没有强烈的条状光源或者反射,用户自己是完全看不到折痕的

但如果以路人的视角,斜着看过去,原本不深的折痕也会因为光线折射的缘故,产生比实际深好几倍的视觉效果:

▲ 某友商折叠屏

此时再看相同角度的 Find N6,浅到几乎不可见的折痕,一下就拉开了和上面对照组的差距:

根据 OPPO 的介绍,Find N6 之所以能够做到「莱茵 TÜV 认证」的无感折痕,主要是通过优化铰链支撑结构,以及改良屏幕玻璃基材实现的。

其中,对于起到支撑作用的铰链中板,OPPO 通过重复 3D 扫描 + 超高精度喷射打印 + 紫外固化的流程,尽可能消除了铰链中板上的微观凹凸结构:

至于 Find N6 的「新款天穹记忆玻璃」——虽然名字很唬人,但本质是借助新的超薄玻璃(UTG)基材和叠层技术,减小了屏幕复合层在折叠时发生的拉扯和蠕变。

更加耐人寻味的是,Find N6 的新屏幕材料还可以让内屏和记忆金属一样,展开静置的时候缓缓「回弹」,淡化已有的折痕。

换言之,Find N6 的折痕之所以「无感」,还真不是展开或者合拢某个瞬间的事情,而是由使用期间每时每刻的细微变化构成的。

至少对于爱范儿编辑部几位用折叠屏做主力机的编辑来说,Find N6 的折痕表现难得地获得了一致好评

而有了这样一块字面意义上「一马平川」的屏幕之后,Find N6 也带回了一个我们曾经非常熟悉的配件——手写笔。

具体来说,Find N6 借助更平整的屏幕,重新打通了手写笔 + ColorOS 全景自由窗的组合,让折叠屏分屏和小窗的好用程度更上一层楼。

毕竟折叠屏手写笔最大的敌人,就是划过折痕时带来的不安感。

而当折痕同时在「视觉」和「触觉」上消失之后,用笔尖在上面书写的芥蒂也就随之消失了:

此外,Find N6 的手写笔也扮演着和 ColorOS AI 功能交互的统一入口的角色。

通过「按住笔杆按钮圈选」的动作,就可以在几乎任何种类的内容上呼出 AI 功能窗口——圈住手绘的表格、脑图和文字,就可以一键转换成电子版图表:

▲ 录屏经过加速处理

甚至你还可以用它来画画。比起文生图模型需要你绞尽脑汁地描述画面,甚至上传参考图;在 Find N6 上你可以直接用笔画个线稿,然后圈选并告诉 AI 生成指定风格的图片:

▲ 录屏经过加速处理

作为一个每日高强度网上冲浪的用户,已经可以想象到这个功能在生成表情包时候的恐怖效率了。

除了这些生成式功能之外,Find N6 的手写笔在日常记录方面也有一些让人「爱不释手」的功能。

比如在评测期间,我们使用最多的就是 AI 字迹美化,可以让开会时随手写下来的灵感和想法变成工整、清晰的正式记录。

这样无论是阅读还是 OCR 转文字,效率都是大增:

▲ zh-MS

可惜这个功能目前的效果还比较简朴,只能优化「水平排版的简体中文和英文」,不支持繁体或者竖排文本

不过需要注意:这次的 OPPO AI 手写笔是一个需要单独购买的配件,折叠键盘也是。两者售价均为 549 元,首销优惠价为 499 元:

影像不弱,但 N3 难再

虽然我们对 Find N6 的整体评价偏向正面,但在影像这个旗舰机的兵家必争之地,它的表现依旧需要重点拎出来聊聊。

Find N6 背面基本延续了上一代简洁利落的 Deco 风格,最大的改动反而是布局——

在 Find N5 的评测里,我们曾吐槽「把闪光灯硬塞进镜头模组是个败笔」。Find N6 由于丹霞色彩还原镜头的加入,闪光灯又回到了背面角落,值得好评。

而我们也可以大胆猜测:这种闪光灯位于机身角落凸起的设计,估计会成为接下来 OPPO Find X9 Ultra 和 X10 系列的标准。

有了丹霞色彩还原镜头的加入,Find N6 的后置镜头也来到了熟悉的四摄阵容,分别是:

  • 5000 万像素超广角镜头
  • 两亿像素主摄
  • 5000 万像素潜望长焦镜头
  • 丹霞色彩还原摄像头

纸面配置看起来不错,落到实际出片表现如何呢?

对主摄来说,虽然比不上一英寸大底的扎实感,但有两亿像素兜底,哪怕是裁切到 28 或 35mm 这种经典人文焦段,画面解析力依然经得起放大细看:

Fine N6 的长焦原生焦段是 3 倍,光圈来到了 f2.7,并且在近距离拍摄时可以提供一定的微距能力,背景虚化过渡也还不错。

此外,OPPO 还在这颗 3 倍长焦的基础上给出了一个类光学变焦的 6 倍选项,与超广角、1 倍、3 倍组成四个预设焦段。

等效 139mm 的焦段可以提供强烈的画面空间压缩感。实测素质相比 iPhone 17 Pro 上的 8 倍变焦稍弱,但作为一台折叠屏的拓展焦段,基本可以满足日常使用。

不过用折叠屏拍照,不只是硬件素质决定的,体验也是不可忽视的一环——不知道有多少人跟我有同感,非常排斥展开内屏拍照。

按理说,用大屏幕取景应该很震撼。但现实恰恰相反,取景框预览的画质会随着尺寸陡然变大而剧烈劣化:

▲ 使用相同倍率放大

这不仅是 OPPO 面临的问题,更是整个折叠屏行业的通病——要在这么大的屏幕上跑满预处理算法,手机的功耗和发热根本压不住。

理智上,我完全理解这种算力与功耗的平衡术。

但在实际体验中,展开一台万元折叠屏,取景框观感却只有个 720P,的确很影响拍照时的「心流」。

在功能生态上,Find N6 几乎照搬了当家的 X9 系列的全部家当。其中最直观的感知,在于丹霞色彩还原镜头这个硬件的加入。

面对霓虹闪烁或明暗交错的复杂光线,Find N6 的色彩表现比上一代 N5 稳了太多;配备哈苏自然色彩科学的大师模式也如约而至。

另一个细节是,根据我们实测来看,Find N6 的 XPAN 模式似乎悄悄换了底层逻辑,默认调用的不再是常规算法,而换成了大师模式的内核,行为更接近传统相机的「全局测光」。

换句话说,Find N6 的 XPAN 模式相比前代,光影过渡显得更自然、更有质感了不少:

有趣的是,在 OPPO 折叠屏手机的报道中,评论区永远有人在怀念 N3。

这部三年前发布的手机将彼时接近旗舰的硬件塞到了手机背面,给不少读者留下了深刻印象,但很遗憾——

Find N3 推出的年代,折叠屏这个形态还在探索的路途中,各家厂商各有下注,颇有「乱拳打死老师傅」的试探感。

这也才有了 N3 作为折叠屏,竟然有双层晶体管像素技术的 LYT-T808 做主摄、超广角与长焦尺寸都处于第一梯队或领先的盛况。

而时至今日,跳出单款产品去看整个折叠机大盘,目前悬在厂商头顶的达摩克利斯之剑已经得到共识。

在越来越薄的机身里,折痕的优化、电池密度的突破以及系统交互的易用性这些关乎日常体验的痛点被彻底抹平之前,影像性能的优先级只能被迫让步

等待地基彻底打牢,高楼才能平地而起。

当年 Find N3 试图在折叠形态下打造巅峰影像的疯狂,可能短期内很难重演。

折叠屏的入坑机

实话说,相比去年突破厚度极限的 Find N5,今年的 Find N6 实际上在尺寸三围与 N5 并无差异,背板从素皮换成玻纤带来的减重倒是实打实的。

但在相同的机身里,Find N6 塞下了一块 6000 毫安时的电池、全局峰值亮度 1600 尼特的内外双屏、IP58/59 防水,以及最重要的——

一块几乎可以算是「无可感折痕」的屏幕。

从各个角度来看,这都是那些之前对折叠屏持犹豫态度的人真正「入坑」的好时机:几乎和直板机相同表现的电池,有独特影调的相机,以及终于不再是阻碍的屏幕体验。

同时,ColorOS 在目前的主流折叠屏市场中也算是一股清流。

相比另外几个主打「雍容华贵」和「水土不服」的折叠屏系统,我们认为 ColorOS 是目前综合本地化功能、设计审美和 AI 实用程度之后,能够在折叠屏手机上获得的最佳体验。

当然,折叠屏的体验同样是靠价格换来的。在存储大涨价的时代背景下,OPPO Find N6 的价格算不上有惊喜——

起步版本 12+256GB 售价 9999 元,16+512GB 则来到了 10999 元,顶配的 16+1TB 卫星通讯版更是上探到了 11999 的价位段:

不过对于那些原本就有计划换机的人来说,这样一台功能不瘸腿、审美更青春、影像有兜底,且屏幕体验出奇好的 OPPO Find N6 ,称得上是 2026 年迄今「最适合观望用户入场」的一台折叠屏——

#欢迎关注爱范儿官方微信公众号:爱范儿(微信号:ifanr),更多精彩内容第一时间为您奉上。

Providable 1.2 works on non-English systems, and why it didn’t previously

By: hoakley
13 January 2026 at 15:30

If you have been trying to use my free utility Providable on a non-English system and have been unable to get it to list apps installed there, you will want to download and use this new version 1.2, which should address that problem.

It’s available from here: providable12
and will shortly be getting its own place in a Product Page, and in Downloads above.

Just to demonstrate that Providable 1.2 does list apps correctly in non-English systems, here’s a screenshot of version 1.1 in the upper left showing no apps found, and 1.2 in the lower right with the three apps it should have identified. That’s in Tahoe 26.2 with Chinese set as the primary language.

The rest of this article explains why previous versions failed to list installed apps on non-English systems, why that has more general significance, and how it’s bad behaviour.

Listing apps

It’s curiously difficult to obtain a comprehensive list of apps installed on a Mac. If you look at proposed solutions, many involve iterating through popular locations such as Applications folders, or other time-consuming schemes. This turns out to be duplicated effort, as Spotlight already does that when indexing, and provides indexes you can search far more quickly.

The common recommendation is to use the mdfind command in the form
mdfind "kMDItemKind == 'Application'"
which should find all items that Spotlight has indexed as being of the kind Application. There’s an equivalent available in the Finder’s Find window that demonstrates how well this can work.

As Apple doesn’t appear to explain any further about how Spotlight classifies items into these ‘kinds’, it’s reasonable to assume they are categories with standard names, although that proves to be incorrect when you try the same on a non-English system. You then realise that a ‘kind’ is just an arbitrary string that may be localised. Run that command in macOS localised to Chinese, and you won’t find any Application at all, and when localised to Italian you’ll need to use Applicazione instead.

The textbook solution to localisation problems like this is to provide a set of localised strings, and to pick the correct one depending on the current localisation setting. That may work when you have specialist teams, and can achieve comprehensive cover of all the possibilities, but here it’s impractical, as it would be when writing a script that uses that search command. It’s much better to cheat.

The most obvious way around this is to use a criterion that’s localisation-invariant such as a UTI. You can then search for .app bundles with the UTI of com.apple.application-bundle. I was disappointed to discover that too isn’t as simple as it could be, as UTIs are available in kMDItemContentType, but according to current documentation that returns a complete UTI ‘pedigree’, for an app something like com.apple.application-bundle/com.apple.application/com.apple.localizable-name-bundle/com.apple.package. That may not be correct, though, as using mdls to list metadata shows that the full pedigree is given in kMDItemContentTypeTree rather than kMDItemContentType.

Preparing for both cases, the correct search command should then be
mdfind "kMDItemContentType == 'com.apple.application-bundle*'"

And that is exactly what Providable 1.2 does now.

Does Spotlight reindex when changing localisation?

My next question is what Spotlight actually indexes for kMDItemKind: is the string localised or not? As we don’t have direct access to those indexes, the closest we can come to inspecting them is by dumping metadata using mdls. Using Italian and English as my examples, when running with English as the primary language, kMDItemKind for an app is given as Application, but with Italian primary, it’s given as Applicazione instead.

This is the only metadata that appears localisation-dependent in this way, so either mdls is lying by returning a localised string, or Spotlight is rebuilding its index for kMDItemKind when the primary language changes. Neither behaviour is documented or expected.

Localisation overreach

This isn’t the first time that I’ve run into problems with localisation in command tools. If you use SilentKnight on Apple silicon Macs running non-English systems, you’ll be only too aware of my previous and apparently insoluble issue, where a major command tool can only return strings in localised form, effectively making their interpretation impossible. In that case it’s one of the many modules in system_profiler, returning key information about an Apple silicon Mac’s security status that isn’t readily available anywhere else.

Localisation is wonderful, and vital for many of us using macOS, but in some cases is now being applied too early. I wonder how anyone scripting with mdfind can possibly make use of kMDItemKind across different localisations. If its kinds were drawn from a set of non-localised strings, there would be no such problems. It makes good sense to localise the strings used in its GUI equivalent, but not for the command tool.

There are many examples of where localisation doesn’t take place, for example in UTIs, and in filename extensions. Can you imagine the consequences of localising the latter?

I’m very grateful to Hill-98 for helping me uncover these problems.

Linux文件查找命令find,xargs详述

By: Onlyone
14 December 2011 at 12:40

Linux文件查找命令find,xargs详述

总结:zhy2111314
来自:LinuxSir.Org
整理:北南南北
摘要: 本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhyfly兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读;
目录

+++++++++++++++++++++++++++++++++++++++++++++++++
正文
+++++++++++++++++++++++++++++++++++++++++++++++++

版权声明
本文是zhyfly兄贴在LinuxSir.Org 的一个帖子而整理出来的,如果您对版权有疑问,请在本帖后面跟帖。谢谢;本文的HTML版本由北南南北整理;修改了整篇文档的全角及说明文字中的单词中每个字母空格的问题;为标题加了编号,方便大家阅读;
前言:关于find命令
由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

一、find 命令格式

1、find命令的一般形式为;
find pathname -options [-print -exec -ok ...]

2、find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

3、find命令选项
-name 

按照文件名查找文件。

-perm 
按照文件权限来查找文件。

-prune 
使用这一选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略。

-user 
按照文件属主来查找文件。

-group 
按照文件所属的组来查找文件。

-mtime -n +n 
按照文件的更改时间来查找文件, - n表示文件更改时间距现在n天以内,+ n表示文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time选项。

-nogroup 
查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。

-nouser 
查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在。
-newer file1 ! file2 

查找更改时间比文件file1新但比文件file2旧的文件。
-type 

查找某一类型的文件,诸如:

b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。

-size n:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
-depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。
-fstype:查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件/etc/fstab中找到,该配置文件中包含了本系统中有关文件系统的信息。

-mount:在查找文件时不跨越文件系统mount点。
-follow:如果find命令遇到符号链接文件,就跟踪至链接所指向的文件。
-cpio:对匹配的文件使用cpio命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
   -amin n
  查找系统中最后N分钟访问的文件

  -atime n
  查找系统中最后n*24小时访问的文件

  -cmin n
  查找系统中最后N分钟被改变文件状态的文件

  -ctime n
  查找系统中最后n*24小时被改变文件状态的文件

    -mmin n
  查找系统中最后N分钟被改变文件数据的文件

  -mtime n
  查找系统中最后n*24小时被改变文件数据的文件

4、使用exec或ok来执行shell命令
使用find时,只要把想要的操作写在一个文件里,就可以用exec来配合find查找,很方便的
在有些操作系统中只允许-exec选项执行诸如l s或ls -l这样的命令。大多数用户使用这一选项是为了查找旧文件并删除它们。建议在真正执行rm命令删除文件之前,最好先用ls命令看一下,确认它们是所要删除的文件。
exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号为了使用exec选项,必须要同时使用print选项。如果验证一下find命令,会发现该命令只输出从当前路径起的相对路径及文件名。
例如:为了用ls -l命令列出所匹配到的文件,可以把ls -l命令放在find命令的-exec选项中
# find . -type f -exec ls -l {} \;
-rw-r--r--    1 root     root        34928 2003-02-25  ./conf/httpd.conf
-rw-r--r--    1 root     root        12959 2003-02-25  ./conf/magic
-rw-r--r--    1 root     root          180 2003-02-25  ./conf.d/README
上面的例子中,find命令匹配到了当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出。
在/logs目录中查找更改时间在5日以前的文件并删除它们:
$ find logs -type f -mtime +5 -exec rm {} \;
记住:在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!当使用诸如mv或rm命令时,可以使用-exec选项的安全模式。它将在对每个匹配到的文件进行操作之前提示你。
在下面的例子中, find命令在当前目录中查找所有文件名以.LOG结尾、更改时间在5日以上的文件,并删除它们,只不过在删除之前先给出提示。
$ find . -name "*.conf"  -mtime +5 -ok rm {} \;
< rm ... ./conf/httpd.conf > ? n
按y键删除文件,按n键不删除。
任何形式的命令都可以在-exec选项中使用。
在下面的例子中我们使用grep命令。find命令首先匹配所有文件名为“ passwd*”的文件,例如passwd、passwd.old、passwd.bak,然后执行grep命令看看在这些文件中是否存在一个sam用户。
# find /etc -name "passwd*" -exec grep "sam" {} \;
sam:x:501:501::/usr/sam:/bin/bash

二、find命令的例子;

1、查找当前用户主目录下的所有文件:
下面两种方法都可以使用
$ find $HOME -print
$ find ~ -print


2、让当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件;
$ find . -type f -perm 644 -exec ls -l {} \;

3、为了查找系统中所有文件长度为0的普通文件,并列出它们的完整路径;
$ find / -type f -size 0 -exec ls -l {} \;

4、查找/var/logs目录中更改时间在7日以前的普通文件,并在删除之前询问它们;
$ find /var/logs -type f -mtime +7 -ok rm {} \;

5、为了查找系统中所有属于root组的文件;
$find . -group root -exec ls -l {} \;
-rw-r--r--    1 root     root          595 10月 31 01:09 ./fie1

6、find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件。
该命令只检查三位数字,所以相应文件的后缀不要超过999。先建几个admin.log*的文件 ,才能使用下面这个命令
$ find . -name "admin.log[0-9][0-9][0-9]" -atime -7  -ok rm {} \;
< rm ... ./admin.log001 > ? n
< rm ... ./admin.log002 > ? n
< rm ... ./admin.log042 > ? n
< rm ... ./admin.log942 > ? n

7、为了查找当前文件系统中的所有目录并排序;
$ find . -type d | sort

8、为了查找系统中所有的rmt磁带设备;
$ find /dev/rmt -print

三、xargs
xargs - build and execute command lines from standard input
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题,因而效率不高;
而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
来看看xargs命令是如何同find命令一起使用的,并给出一些例子。
下面的例子查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
#find . -type f -print | xargs file
./.kde/Autostart/Autorun.desktop: UTF-8 Unicode English text
./.kde/Autostart/.directory:      ISO-8859 text\
......
在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中:
$ find / -name "core" -print | xargs echo "" >/tmp/core.log
上面这个执行太慢,我改成在当前目录下查找
#find . -name "file*" -print | xargs echo "" > /temp/core.log
# cat /temp/core.log
./file6
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
# ls -l
drwxrwxrwx    2 sam      adm          4096 10月 30 20:14 file6
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 http3.conf
-rwxrwxrwx    2 sam      adm             0 10月 31 01:01 httpd.conf

# find . -perm -7 -print | xargs chmod o-w
# ls -l
drwxrwxr-x    2 sam      adm          4096 10月 30 20:14 file6
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
用grep命令在所有的普通文件中搜索hostname这个词:
# find . -type f -print | xargs grep "hostname"
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
用grep命令在当前目录下的所有普通文件中搜索hostnames这个词:
# find . -name \* -type f -print | xargs grep "hostnames"
./httpd1.conf:#     different IP addresses or hostnames and have them handled by the
./httpd1.conf:# VirtualHost: If you want to maintain multiple domains/hostnames
on your
注意,在上面的例子中, \用来取消find命令中的*在shell中的特殊含义。
find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。

四、find 命令的参数
下面是find一些常用参数的例子,有用到的时候查查就行了,像上面前几个贴子,都用到了其中的的一些参数,也可以用man或查看论坛里其它贴子有find的命令手册

1、使用name选项
文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。
可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。
不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.txt的文件,使用~作为 'pathname'参数,波浪号~代表了你的$HOME目录。
$ find ~ -name "*.txt" -print
想要在当前目录及子目录中查找所有的‘ *.txt’文件,可以用:
$ find . -name "*.txt" -print
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可以用:
$ find . -name "[A-Z]*" -print
想要在/etc目录中查找文件名以host开头的文件,可以用:
$ find /etc -name "host*" -print
想要查找$HOME目录中的文件,可以用:
$ find ~ -name "*" -print 或find . -print
要想让系统高负荷运行,就从根目录开始查找所有的文件。
$ find / -name "*" -print
如果想在当前目录查找文件名以两个小写字母开头,跟着是两个数字,最后是.txt的文件,下面的命令就能够返回名为ax37.txt的文件:
$find . -name "[a-z][a-z][0--9][0--9].txt" -print

2、用perm选项
按照文件权限模式用-perm选项,按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
如在当前目录下查找文件权限位为755的文件,即文件属主可以读、写、执行,其他用户可以读、执行的文件,可以用:
$ find . -perm 755 -print
还有一种表达方法:在八进制数字前面要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666
# ls -l
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp

# find . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./temp
-perm mode:文件许可正好符合mode
-perm +mode:文件许可部分符合mode
-perm -mode: 文件许可完全符合mode

3、忽略某个目录
如果在查找文件时希望忽略某个目录,因为你知道那个目录中没有你所要查找的文件,那么可以使用-prune选项来指出需要忽略的目录。在使用-prune选项时要当心,因为如果你同时使用了-depth选项,那么-prune选项就会被find命令忽略。
如果希望在/apps目录下查找文件,但不希望在/apps/bin目录下查找,可以用:
$ find /apps -path "/apps/bin" -prune -o -print

4、使用find查找文件的时候怎么避开某个文件目录
比如要在/usr/sam目录下查找不在dir1子目录之内的所有文件
find /usr/sam -path "/usr/sam/dir1" -prune -o -print
find [-path ..] [expression] 在路径列表的后面的是表达式
-path "/usr/sam" -prune -o -print 是 -path "/usr/sam" -a -prune -o
-print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/sam" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "/usr/sam" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。
这个表达式组合特例可以用伪码写为
if -path "/usr/sam"  then
          -prune
else
          -print
避开多个文件夹
find /usr/sam \( -path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -print
圆括号表示表达式的结合。
\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义。
查找某一确定文件,-name等选项加在-o 之后
#find /usr/sam  \(-path /usr/sam/dir1 -o -path /usr/sam/file1 \) -prune -o -name "temp" -print

5、使用user和nouser选项
按文件属主查找文件,如在$HOME目录中查找文件属主为sam的文件,可以用:
$ find ~ -user sam -print
在/etc目录下查找文件属主为uucp的文件:
$ find /etc -user uucp -print
为了查找属主帐户已经被删除的文件,可以使用-nouser选项。这样就能够找到那些属主在/etc/passwd文件中没有有效帐户的文件。在使用-nouser选项时,不必给出用户名; find命令能够为你完成相应的工作。
例如,希望在/home目录下查找所有的这类文件,可以用:
$ find /home -nouser -print

6、使用group和nogroup选项
就像user和nouser选项一样,针对文件所属于的用户组, find命令也具有同样的选项,为了在/apps目录下查找属于gem用户组的文件,可以用:
$ find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用nogroup选项。下面的find命令从文件系统的根目录处查找这样的文件
$ find / -nogroup-print

7、按照更改时间或访问时间等查找文件
如果希望按照更改时间来查找文件,可以使用mtime,atime或ctime选项。如果系统突然没有可用空间了,很有可能某一个文件的长度在此期间增长迅速,这时就可以用mtime选项来查找这样的文件。
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在5日以内的文件,可以用:
$ find / -mtime -5 -print
为了在/var/adm目录下查找更改时间在3日以前的文件,可以用:
$ find /var/adm -mtime +3 -print

8、查找比某个文件新或旧的文件
如果希望查找更改时间比某个文件新但比另一个文件旧的所有文件,可以使用-newer选项。它的一般形式为:
newest_file_name ! oldest_file_name
其中,!是逻辑非符号。
查找更改时间比文件sam新但比文件temp旧的文件:
例:有两个文件
-rw-r--r--    1 sam      adm             0 10月 31 01:07 fiel
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp

# find -newer httpd1.conf  ! -newer temp -ls
1077669    0 -rwxrwxr-x   2 sam      adm             0 10月 31 01:01 ./httpd.conf
1077671    4 -rw-rw-rw-   1 root     root         2792 10月 31 20:19 ./temp
1077673    0 -rw-r--r--   1 sam      adm             0 10月 31 01:07 ./fiel
查找更改时间在比temp文件新的文件:
$ find . -newer temp -print


9、使用type选项
在/etc目录下查找所有的目录,可以用:
$ find /etc -type d -print
在当前目录下查找除目录以外的所有类型的文件,可以用:
$ find . ! -type d -print
在/etc目录下查找所有的符号链接文件,可以用
$ find /etc -type l -print

10、使用size选项
可以按照文件长度来查找文件,这里所指的文件长度既可以用块(block)来计量,也可以用字节来计量。以字节计量文件长度的表达形式为N c;以块计量文件长度只用数字表示即可。
在按照文件长度查找文件时,一般使用这种以字节表示的文件长度,在查看文件系统的大小,因为这时使用块来计量更容易转换。
在当前目录下查找文件长度大于1 M字节的文件:
$ find . -size +1000000c -print
在/home/apache目录下查找文件长度恰好为100字节的文件:
$ find /home/apache -size 100c -print
在当前目录下查找长度超过10块的文件(一块等于512字节):
$ find . -size +10 -print

11、使用depth选项
在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
在下面的例子中, find命令从文件系统的根目录开始,查找一个名为CON.FILE的文件。
它将首先匹配所有的文件然后再进入子目录中查找。
$ find / -name "CON.FILE" -depth -print

12、使用mount选项
在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。
从当前目录开始查找位于本文件系统中文件名以XC结尾的文件:
$ find . -name "*.XC" -mount -print


五、关于本文
本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhy2111314兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读; ── 北南南北
六、相关文档
❌
❌