我成功使用find來創建當前子目錄中的所有文件的列表,不包括子目錄「緩存」中的所有文件。這是我的第一位代碼:管道找到grep進行快速目錄排除的結果
find . -wholename './cach*' -prune -o -print
我現在希望將其管理爲grep命令。它似乎應該很簡單:
find . -wholename './cach*' -prune -o -print | xargs grep -r -R -i "samson"
...但這是返回的結果,主要是從緩存目錄。我試過刪除xargs引用,但是這樣做的確如你所期望的那樣,在文件名的文本上運行grep,而不是在文件本身上運行。我的目標是在任何沒有緩存內容的文件中找到「samson」。
我可能會在這個例子中使用加倍的greps來解決這個問題,但我很好奇爲什麼這個單行程的行爲是這樣的。我很想聽到有關如何修改它的想法,同時仍然使用這兩個命令(因爲這樣做有速度優勢)。
(這是在CentOS 5的,順便說一句。)
謝謝!遞歸的去除對我來說是個訣竅。 (舊習慣很難死掉,順便說一句,這是我的一個錯誤類型,因爲我通常使用「-r -i -I」,這比冗餘遞歸標誌更有意義)。「全名」部分很好,因爲不需要的子目錄確實在當前目錄的根目錄中。所以現在是: 'find。 -wholename'./cach*'-prune -o -print | xargs grep -i -I「samson」' – eternalnewb 2012-07-19 17:01:51
太棒了,很高興這很簡單=] – newfurniturey 2012-07-19 17:04:26