2

次のシナリオを検討してください。

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

次のような-versionオプションを使用して、すべての結果を確認したいと思います。

/usr/sbin/httpd -version

しかし、xargsコマンドを書くことはできません、それは実行可能ですか?よろしくお願いします。

4

2 に答える 2

2

xargsは実際にはその仕事に適したツールではありませんが、forループは機能します。

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

数千の場合httpd、出力の長さに問題が発生する可能性があり$(find...)ますが、その数が多い場合は、おそらく手に大きな問題が発生しますhttpd

于 2011-09-22T06:14:06.423 に答える
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の意味を知らない場合があり、一部のファイルは実行できない場合があります。

于 2011-09-22T07:27:46.453 に答える