shell脚本从目录中的某些文件递归地grep数据并将值返回到文件

shell脚本从目录中的某些文件递归地grep数据并将值返回到文件

我正在制作一个简单的 shell 脚本,它将最大限度地减少我搜索父目录下的所有目录以及 grep 某些文件中的某些内容所花费的时间。这是我的脚本。

#!/bin/sh
MainDir=/var/opt/database/1227-1239/

cd "$MainDir"

for dir in $(ls); do

grep -i "STAGE,te_start_seq Starting" "$dir"/his_file | tail -1 >> /home/xtee/sst-logs.out

if [ -f "$dir"/sysconfig.out];
then
    grep -A 1 "Drive Model" "$dir"/sysconfig.out | tail -1 >> /home/xtee/sst-logs.out
else
    grep -m 1 "Physical memory size" "$dir"/node0/setupsys.out | tail -1 >> /home/xtee/sst-logs.out
fi

done

该脚本应该 grepSTAGE,te_start_seq Starting文件下的字符串his_file,然后将其转储sst-logs.out。但我的问题是声明中的部分if。该脚本应检查当前目录中的sysconfig.out、 grepdrive model并将其转储到sst-logs.out(如果存在),否则,将目录更改为node0grep physical memory sizefromsetupsys.out并将其转储到sst-logs.out。我的问题是,该if then else语句似乎不起作用,因为它根本不转储任何数据,但如果我手动执行 grep,我确实有数据。

我的 shell 脚本出了什么问题?有没有更有效的方法来做到这一点?

答案1

if [ -r "$dir"/sysconfig.out ];

t注意和之间的空格]

相关内容