我历来执行过类似的事情:
find . 2>/dev/null | xargs grep -i something_to_find 2>/dev/null
如果我的pwd是barfoo(/ foo / bar / baz / foofoo / foobar / foobaz / barfoo),它会找到匹配项.但是,如果我cd到/ foo,它将不再找到匹配项.
条件:
>权限都是775
>目录不是符号链接
>它们都在同一个文件系统/服务器上
所以我很好奇是否有一个默认的-maxdepth应用于查找,或者是否有其他约束为什么这不起作用?
附加信息:
发布了一些很棒的评论.这是一些额外的信息:
>这适用于GNU,而非POSIX
> find –version:GNU find version 4.2.27
> grep –version:(GNU grep)2.5.1
> xargs –version:GNU xargs版本4.2.27
>删除STDERR的重定向与结果或缺乏结果无关
> barfoo中文件的路径(已知工作)没有空格,但/ foo / bar中其他目录中的文件可能有空格;但是,我不知道这会有什么问题
>我意识到我并没有具体的路径,但这些都是命名良好的目录,不要与任何设备混淆
有趣的发现:
第一个不起作用,但第二个不起作用:
>找到. -type f | xargs grep -i something_to_find
>找到. -type f -name“* .ext”| xargs grep -i something_to_find
甚至odder是-name“*.*”不起作用,必须给出文件扩展名;在搜索某些内容时可能会出现问题.
我想知道在最大错误计数或最大缓冲区大小之后是否有终止.我知道这些目录中有很多文件,但是在指定文件类型(限制结果)时它的工作原理很有意思.