You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找并删除目录及子目录中文件名不含指定多模式的文件?

解决方法

你遇到的问题核心是两点:一是-name默认是精确匹配文件名,若要匹配包含特定字符串的文件,必须用通配符*包裹目标字符串;二是原命令未使用通配符,导致只有文件名完全等于指定字符串的文件才会被排除,包含该字符串的文件仍会被选中。

正确命令(查找并删除)

如果要删除所有文件名中**既不包含"TMP_TGL_2"也不包含"PRES_SFC_0"**的文件,直接用两个取反条件即可:

find . -type f ! -name "*TMP_TGL_2*" ! -name "*PRES_SFC_0*" -delete

或者用括号分组的等价写法:

find . -type f \! \( -name "*TMP_TGL_2*" -o -name "*PRES_SFC_0*" \) -delete

关键注意事项

  • 先测试再删除:建议先去掉-delete参数执行命令,确认列出的文件确实是你想要删除的,避免误删重要文件。
  • 通配符的作用:*代表任意长度的任意字符,*TMP_TGL_2*会匹配所有文件名中包含该字符串的文件(比如abc_TMP_TGL_2_def.txt),而非仅精确等于TMP_TGL_2的文件。
  • 大小写处理:如果需要忽略文件名的大小写,将-name替换为-iname即可。

内容的提问来源于stack exchange,提问作者glades

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:52:28