2015-05-04 16 views
0

我有以下目錄結構:在一個特定的目錄中specifc文件使用find和grep

./A1 
./A2 
./A3 
./B 
./C 

在A *目錄中的每一個,我有:

./A*/logs 
./A*/test 
在日誌中

目錄我有:

./log-jan-1 
./log-jan-2 
./log-feb-1 

我如何在A目錄中的所有1月日誌中grep字符串?

我想這一點,但它並沒有找到字符串,雖然它存在於日誌文件:

find . -type d -name 'A*' print | xargs -n1 -I PATH grep string - PATH/logs/log-jan* 

我在做什麼錯?

+0

請更具體的不是「它不工作」。 – BadZen

+0

我改正了陳述。 – SFbay007

回答

1

你爲什麼不乾脆用

grep string ./A*/logs/log-jan* 

+1

這對我的理解更多,有些情況下你想根據某些標準找到特定的目錄/文件,然後grep。 – SFbay007

0

如果不是拼寫錯誤,您應該使用-print(或-print0)而不是打印。

但作爲find + xargs + grep結構是很難調試,您應該按順序進行測試:

  • find . -type d -name 'A*' -print
  • find . -type d -name 'A*' -print0 | xargs -0 -n1 -I PATH echo grep string - PATH

最後:

find . -type d -name 'A*' -print0 | xargs -0 -n1 -I PATH grep string - PATH/logs/log-jan* 

在你使用的情況下,-print-print0應該給予同樣的結果,但有被燒焦與-print,我總是用-print0之前xargs

相關問題