shell脚本遍历文件及查找字符串

shell脚本遍历文件及查找字符串

粘贴在终端执行效果最佳,这样只需要执行一次完整脚本,然后接下来再查找内容就只需从第3步复制粘贴到终端执行了

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 1. 遍历一级目录中满足 *P*IE* 条件的目录
mapfile -t dirs1 < <(find ./ -maxdepth 1 -name "*P*IE*" -type d);
echo "${dirs1[@]}"

# 2. 在第一次遍历中的所以一级目录下查找满足 *windows 或 *linux 的目录,不区分大小写,作为第二次遍历的结果
for ((i = 0; i < "${#dirs1[${i}]}"; i++));
do
  mapfile -t -O "${#dirs2[@]}" dirs2 < <(find "${dirs1[${i}]}" -iname "*windows" -o -iname "*linux")
done
echo "${dirs2[@]}"

# 3. 在第二次遍历的目录中查找指定字符串
for ((j = 0; j < "${#dirs2[@]}"; j++));
do
  find "${dirs2[${j}]}" -name "*.c"\
       -o -name "*.cpp"\
       -o -name "*.h"\
    | xargs grep --color=always -ain\
           "YPcie_Set_Read_DMA_Blk"
done
Licensed under CC BY-NC-SA 4.0
最后更新于 Jul 11, 2025 12:43 +0800
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计