我遇到以下問題。如何通過使用grep獲取僅路徑的文件名
I'm做了類似的grep:
$命令= grep的-r -i --include = * CFG '主機{' /omd/sites/mesh/etc/icinga/conf.d/對象
我得到了以下的輸出:
/omd/sites/mesh/etc/icinga/conf.d/objects/testsystem/test1.cfg:define host{
/omd/sites/mesh/etc/icinga/conf.d/objects/testsystem/test2.cfg:define host{
/omd/sites/mesh/etc/icinga/conf.d/objects/testsystem/test3.cfg:define host{
...
所有* .cfg文件保存。
隨着exec($command,$array)
我通過在陣列中的結果。
是否有可能只獲取grep-command的結果文件名。
我曾嘗試以下:
$Command= grep -l -H -r -i --include=*.cfg 'host{' /omd/sites/mesh/etc/icinga/conf.d/objects
,但我得到了同樣的結果。
我知道在論壇上有類似的話題存在。(How can I use grep to show just filenames (no in-line matches) on linux?),但該解決方案不起作用。
使用「exec($ Command,$ result_array)」我嘗試獲取結果的數組。 提到的解決方案都可以工作,但我不能用exec()獲得結果陣列。
任何人都可以幫助我嗎?
你建議的串行作品!謝謝。我還有一個問題: - 我嘗試以數組形式獲得結果 - 我試圖執行您的字符串,如下所示:$ shellCommand = find /omd/sites/mesh/etc/icinga/conf.d/objects -name' * .cfg'\ -execdir grep -r -i -l'host {'\ {} +
exec($ shellCommand,$ hostname); –
@ThomasLang和其他回答者一樣,我錯過了問題的第二部分。也許你應該發佈兩個單獨的問題?無論如何,我已經修復了我的答案以添加該部分。希望這個幫助。 –
在第二次看我的問題時,我看到我忘記了第二部分。所以我稍後添加了它。 我希望這不是讓人困惑。 –