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

Linux下如何提取含_abc模式的文件名中该模式前的部分并排除不含该模式的文件

解决方法:提取含_abc的NC文件前缀

我来帮你搞定这个需求!核心思路是先筛选出包含_abc的.nc文件,再提取_abc之前的前缀部分,这样就能自动排除不含_abc的文件(比如你提到的kjkh_lkm_kkkkk_bbb_198101-196012.nc)。这里有两个实用的命令方案:

方案1:grep + sed 组合

这个组合逻辑清晰,先过滤再处理:

ls *.nc | grep "_abc" | sed 's/_abc.*//'
  • ls *.nc:列出当前目录下所有.nc格式文件
  • grep "_abc":只保留文件名中包含_abc的条目
  • sed 's/_abc.*//':将每个匹配到的文件名中_abc及其后面的所有内容替换为空,得到我们需要的前缀

方案2:单awk命令实现

用awk可以一步完成过滤和提取,更简洁:

ls *.nc | awk '/_abc/ {sub(/_abc.*/, "", $0); print $0}'
  • /\_abc/:awk只处理包含_abc的行
  • sub(/_abc.*/, "", $0):对当前行执行替换操作,把_abc及后续内容清空
  • print $0:输出处理后的前缀

验证结果

用你给出的文件列表测试,两个命令都会输出符合预期的结果:

  • kjkh_lkm_kkkkk
  • LM_lkm_kjjkk
  • kjkh_lkm_kjjkk
  • SAM_lkm
  • kjk_lkm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 16:07:41