如何在bash中使用xargs命令检查版本?

时间:2011-09-22 06:07:38

标签: linux bash shell xargs

请考虑以下情况:

$ find / -type f -name httpd
/opt/httpd.bin/httpd
/etc/rc.d/init.d/httpd
/usr/sbin/httpd
......

我想使用-version选项检查每个结果,例如:

/usr/sbin/httpd -version

但是我不能写xargs命令,它可行吗? 非常感谢提前。

2 个答案:

答案 0 :(得分:3)

xargs不是真正适合这项工作的工具,for循环可以正常工作:

for httpd in $(find / -type f -name httpd)
do
    $httpd --version
done

如果您有数千个httpd s,那么您可能会遇到$(find...)输出长度的问题,但如果您有那么多httpd,那么您可能会遇到更大问题第

答案 1 :(得分:1)

您可以使用xargs检查这样的版本:

find ./ -type f -name httpd | xargs -n1 -I{} bash -c "{} --version"

但我不建议,这很麻烦

您可以使用:

find ./ -type f -name httpd -exec {} --version \; -print

(打印是可选的)

另一方面,请确保您确实要执行所有文件,/ etc / rc.d / init.d / httpd可能不知道--version意味着其中一些文件可能无法执行。