我成功使用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