linux遍历指定目录下log文件内容以查找内容

find-log.sh

#!/bin/bash

# 设置要遍历的目录列表
target_dirs=(
    "/root/emall/pms/logs"
    "/root/emall/personal/logs"
    "/root/emall/order/logs"
    "/root/emall/goods/logs"
    "/root/emall/finance/logs"
    "/root/emall/logger/logs"
    "/root/emall/jd/logs"
    "/root/emall/recharge/logs"
    "/root/emall/orange/logs"
    "/root/emall/perform/logs"
)

# 过滤文本
filter_text="$1"

# 遍历目录列表中的每个目录
for target_dir in "${target_dirs[@]}"; do
	for file in "$target_dir"/*; do
	  # 检查文件是否为日志文件
	  if [[ $file == *.log ]]; then
	    # 使用 grep 命令搜索包含文本“abc123”的内容
	    matched_lines=$(grep "$filter_text" "$file")
	    if [ $? -eq 0 ]; then
	      echo "=================== less $file /$filter_text ==================="
	      #grep "$filter_text" "$file"
	      sed -n '/'$filter_text'/,+0p' "$file"
	      echo ""
	    fi
	  fi
	done
done

find-errlog.sh

#!/bin/bash

# 设置要遍历的目录列表
target_dirs=(
    "/root/emall/pms/logs"
    "/root/emall/personal/logs"
    "/root/emall/order/logs"
    "/root/emall/goods/logs"
    "/root/emall/finance/logs"
    "/root/emall/logger/logs"
    "/root/emall/jd/logs"
    "/root/emall/recharge/logs"
    "/root/emall/orange/logs"
    "/root/emall/perform/logs"
)

# 过滤文本
filter_text="$1"

# 遍历目录列表中的每个目录
for target_dir in "${target_dirs[@]}"; do
	for file in "$target_dir"/*; do
	  # 检查文件是否为日志文件
	  if [[ $file == *.log ]]; then
	    # 使用 grep 命令搜索包含文本“abc123”的内容
	    matched_lines=$(grep "$filter_text" "$file"|grep ERROR)
	    if [ $? -eq 0 ]; then
	      echo "=================== less $file $filter_text ==================="
	      #grep "$filter_text" "$file"
		  #显示包含匹配内容的后50行
	      sed -En '/'$filter_text'/,+50p' "$file"
	      echo ""
	    fi
	  fi
	done
done