1. 程式人生 > >Linux按檔案內容查詢檔案

Linux按檔案內容查詢檔案

遇到這樣一個面試題:在Linux下從abc目錄開始查詢所有副檔名為.log的文字檔案,並找出內容包含ERROR的檔案。

查詢命令:find /abc -name "*.log" | xargs grep "ERROR"

一般工作中常用按名稱查詢、按時間或型別查詢。find命令還可以結合xargs命令來查詢。xargs可以從輸入中構建和執行shell命令。

xargs與find的-exec引數不同的是

1、傳遞給exec的命令長度有限制,這樣在find命令執行幾分鐘之後,就會出現溢位錯誤。錯誤資訊通常是“引數列太長”或“引數列溢位”。而xargs命令與find命令一起使用。find命令把匹配到的檔案傳遞給xargs命令,而xargs命令每次只獲取一部分檔案而不是全部,不像-exec選項那樣。這樣它可以先處理最先獲取的一部分檔案,然後是下一批,並如此繼續下去。

2、有些系統中,使用-exec選項會為處理每一個匹配到的檔案而發起一個相應的程序,並非將匹配到的檔案全部作為引數一次執行。這樣在有些情況下就會出現程序過多,系統性能下降的問題,因而效率不高;而使用xargs命令則只有一個程序。另外,在使用xargs命令時,究竟是一次獲取所有的引數,還是分批取得引數,以及每一次獲取引數的數目都會根據該命令的選項及系統核心中相應的可調引數來確定。


find詳細使用方法可以參考:http://www.cnblogs.com/mchina/archive/2012/07/02/2573313.html