2011-09-22 64 views
2

请考虑以下情形:如何在bash中使用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的命令,是可行吗? 非常感谢提前。

回答

1

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

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

但我不推荐,它的繁琐

您可以使用:

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

(带打印是可选)

在附注中,确保您确实想要执行所有这些e文件,/etc/rc.d/init.d/httpd可能不知道--version是什么意思,其中一些可能不可执行。

3

xargs是不是真的对这份工作的合适工具,for循环会的工作,虽然:

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

如果你有成千上万的httpd当时的你可能会遇到一个问题与$(find...)的长度输出,但如果你有很多httpd,你可能会遇到更大的问题。