Bash 正在尝试循环以下内容

Bash 正在尝试循环以下内容,bash,list,Bash,List,我一直在使用一个简单的脚本从.nessus文件中提取信息 cat blee.nessus | grep -o 'severity="4.*"' | sort --unique | wc -l && cat blee.nessus | grep -o 'severity="3.*"' | sort --unique | wc -l && cat blee.nessus | grep -o 'severity="2.*"' | sort --unique | wc -

我一直在使用一个简单的脚本从.nessus文件中提取信息

cat blee.nessus | grep -o 'severity="4.*"' | sort --unique | wc -l && cat blee.nessus | grep -o 'severity="3.*"' | sort --unique | wc -l && cat blee.nessus | grep -o 'severity="2.*"' | sort --unique | wc -l && cat blee.nessus | grep -o 'severity="1.*"' | sort --unique | wc -l && cat blee.nessus | grep cvss_base | tr -d '<cvss_base_score>'| tr -d '/' | paste -sd+ | bc
我有一个满是.nessus文件的目录。是否有一种方法可以将上述命令迭代到所有.nessus文件和正在输出的ID文件上,即:

blee.nessus
2
0
13
4
2237.7
我试着用find做点什么-iname“*.nessus”执行这些命令,但似乎无法正确获取语法


感谢您在这方面的帮助,

为什么不为循环创建一个

for i in *.nessus; do
    echo "$i"
    cat "$i" | ... rest of your command ...
done

为什么不只是一个
for
循环

for i in *.nessus; do
    echo "$i"
    cat "$i" | ... rest of your command ...
done

tr-d
不会删除一个字符串,它会删除该字符串中的任何字符,不管它在哪里,也不管它的顺序如何。因此
tr-d'
将从输入中的任何地方删除任何
c
、任何
v
、任何
\
,等等……坦白地说,如果您通过XML文档进行解析,您的境况会好得多(在可靠性和健壮性方面)使用shell中支持XML的工具——请特别参阅。(另外,作为一个相对次要的问题——
cat foo | bar
的编写效率要高得多,因为
tr-d
不会删除字符串,它会删除该字符串中的任何字符,无论其位置或顺序如何。因此
tr-d'
将从任何时候删除任何
c
、任何
v
、任何
等。)坦白地说,如果您是通过XML文档进行解析的,那么使用shell中的XML感知工具(特别是参见)会大大提高您的效率(在可靠性和健壮性方面)