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

如何基于file1中的子串文件名匹配并指定待删除文件?

这需求很典型,我给你几个靠谱的实现方法,分步骤来,还能避免误删:

方法一:用while循环逐行处理(最直观,易调试)

首先得确保你的file1里每个要匹配的子串单独占一行。如果现在是用顿号分隔的(比如你给出的file123、file313、file355),先把它转换成每行一个的格式:

tr '、' '\n' < file1 > file1_clean

然后用循环读取每个子串,精准匹配并删除对应的文件:

while read -r pattern; do
  # 先执行echo命令验证要删除的文件列表,确认无误后再换成rm
  echo "准备删除:${pattern}.sam.out"
  # rm -f "${pattern}.sam.out"
done < file1_clean

重要提示:一定要先运行带echo的版本,确认输出的是你要删除的那三个文件(file123.sam.out、file313.sam.out、file355.sam.out),没问题再把echo那行注释掉,启用rm命令。

方法二:用xargs快速执行(更简洁)

如果已经把file1处理成每行一个子串的格式,也可以用xargs一次性完成操作:

# 同样先验证
xargs -I {} echo "准备删除:{}.sam.out" < file1
# 确认后执行删除
# xargs -I {} rm -f {}.sam.out < file1
通用扩展:如果子串不在文件名开头

要是以后遇到子串在文件名任意位置的情况(比如要删除包含355的所有.sam.out文件),可以把命令改成匹配任意位置的模式:

while read -r pattern; do
  rm -f *"${pattern}"*.sam.out
done < file1

不过在你的场景里,子串都是文件名的前缀,所以用第一种精确匹配的方式更安全——能完美避开你要保留的file342455.sam.out和file34455.sam.out,不会误删。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 20:57:41