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

如何基于grep含ERROR的结果移动指定目录下的文件

实现方案

直接在循环内通过一次grep完成匹配判断,同时执行移动操作,以下是两种可行写法:

写法一(切换到目标目录操作)

cd /var/list || exit
for i in TB.*; do
  # 静默检查日志中是否存在包含ERROR和当前文件名的行
  if grep -q "ERROR.*$i" /var/sup/logs.txt; then
    mv "$i" /var/last/
    echo "已移动: $i" # 可选,用于查看操作结果
  fi
done

写法二(使用完整路径)

如果不想切换目录,可通过提取文件名来匹配:

for i in /var/list/TB.*; do
  filename=$(basename "$i")
  if grep -q "ERROR.*$filename" /var/sup/logs.txt; then
    mv "$i" /var/last/
  fi
done

核心细节说明

  • grep -q:静默模式,仅返回匹配状态(成功/失败),不输出匹配内容,适合作为条件判断依据
  • ERROR.*$i:正则表达式,确保日志行中同时包含"ERROR"和当前文件名,适配你给出的ERROR: TB.1234.txt格式
  • cd /var/list || exit:切换目录失败时直接退出脚本,避免后续因路径错误执行无效操作
  • 确保/var/last目录存在且有足够写入权限,否则移动操作会失败

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:05:25