我成功地使用 find 创建了当前子目录中所有文件的列表,不包括子目录“缓存”中的文件。这是我的第一段代码:
find . -wholename './cach*' -prune -o -print
我现在希望将其通过管道传输到 grep 命令中。看起来应该很简单:
find . -wholename './cach*' -prune -o -print | xargs grep -r -R -i "samson"
...但这是返回的结果主要来自缓存目录。我已经尝试删除 xargs 引用,但这符合您的期望,在文件名的文本上运行 grep,而不是在文件本身上运行。我的目标是在任何没有缓存内容的文件中找到“samson”。
在这种情况下,我可能会通过使用 double greps 来解决这个问题,但我很好奇为什么这个单行代码会以这种方式运行。我很想听听关于在仍然使用这两个命令的同时修改它的方法的想法(因为这样做有速度优势)。
(这是在 CentOS 5 中,顺便说一句。)