请考虑以下情况:
$ find / -type f -name httpd
/opt/httpd.bin/httpd
/etc/rc.d/init.d/httpd
/usr/sbin/httpd
......
我想使用-version选项检查每个结果,例如:
/usr/sbin/httpd -version
但是我不能写xargs命令,它可行吗? 非常感谢提前。
答案 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意味着其中一些文件可能无法执行。