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

Linux下从多文件中筛选含低于指定分数的文件名方法

问题描述

我有多个格式相同的文本文件,示例如下:

Calss1.txt

No grade
1     93
2     45
3     66

Calss2.txt

No grade
1     91
2     99
3     76

我希望找出所有存在分数低于60的文件名,并将结果输出到另一个文件,期望输出如下:

output文件内容

Calss1.txt

我尝试了如下命令,但不知道如何在满足条件时打印文件名:

cat .txt | awk '{if($2==$2+0 && $2<50)print ```???```}'
解决方案

直接用awk处理所有.txt文件即可,利用awk内置的FILENAME变量获取当前处理的文件名,同时避免重复输出同一文件:

awk 'NR>1 && $2+0 == $2 && $2 < 60 {print FILENAME; nextfile}' *.txt > output

命令说明

  • NR>1:跳过每个文件的第一行标题("No grade")
  • $2+0 == $2:判断第二列是否为数字,排除非数值行
  • $2 < 60:筛选分数低于60的行,若你实际需要筛选低于50的,改成$2 < 50即可
  • print FILENAME:输出当前符合条件的文件名
  • nextfile:找到符合条件的行后直接跳转至下一个文件,避免同一文件多次输出
  • *.txt:匹配当前目录下所有txt格式文件
  • > output:将最终结果写入output文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:37:03